精华内容
下载资源
问答
  • SpringMVC 开发接口

    万次阅读 多人点赞 2016-09-22 22:21:51
    上篇文章讲解了SpringMVC 入门,这篇文章使用SpringMVC 来开发接口。记得之前有一篇文章 java web开发(二) 接口开发,是使用Servlet开发的接口。如果你还未了解,可以先看看这篇文章。好了,我们进入主题。 在开始...

         上篇文章讲解了SpringMVC 入门,这篇文章使用SpringMVC 来开发接口。记得之前有一篇文章 java web开发(二) 接口开发,是使用Servlet开发的接口。如果你还未了解,可以先看看这篇文章。好了,我们进入主题。

          在开始这篇文章之前,请先阅读请参考java web开发(二) 接口开发 这篇文章。

    一、搭建环境。这一步骤 请参考上篇文章, SpringMVC 入门浅谈

    二、接口数据设计,请参考java web开发(二) 接口开发 这篇文章。

    三、具体实现。

          整个工程的目录结构如下图所示,

           

    项目说明:

    (1). action 供外部系统调用的接口类。

    (2).business 业务实现类。

    (3). json 处理json的类。(有关详细说明,请参考java web开发(二) 接口开发 这篇文章。

    (4). model 实体类。

    (5). service 具体的接口以及实现类。

           下面就主要讲解具体的接口调用实现类。

     

    @Controller
    public class StudentServlet {
    
    
    	@RequestMapping("/getAllStudent")
    	public void getAllStudent(HttpServletRequest request, HttpServletResponse response) {
    		List<Students> list = new StudentServiceImpl().getAllStudents();
    		ListObject listObject = new ListObject();
    		listObject.setItems(list);
    		listObject.setCode(StatusCode.CODE_SUCCESS);
    		listObject.setMsg("访问成功");
    		ResponseUtils.renderJson(response, JackJsonUtils.toJson(listObject, true));
    	}
    
    }
    

    说明,StudentServlet 类实现了获取所有学生的方法,将json串传入至响应中。

     

    其中ResponseUtils 如下,

     

    /**
     * HttpServletResponse帮助类
     */
    public class ResponseUtils {
    
    public static void renderJson(HttpServletResponse response, String text) {
    		// System.out.print(text);
    		render(response, "text/plain;charset=UTF-8", text);
    	}
    
    
    /**
    	 * 发送内容。使用UTF-8编码。
    	 * 
    	 * @param response
    	 * @param contentType
    	 * @param text
    	 */
    	public static void render(HttpServletResponse response, String contentType, String text) {
    		response.setContentType(contentType);
    		response.setCharacterEncoding("utf-8");
    		response.setHeader("Pragma", "No-cache");
    		response.setHeader("Cache-Control", "no-cache");
    		response.setDateHeader("Expires", 0);
    		try {
    			response.getWriter().write(text);
    		} catch (IOException e) {
    		}
    	}
    }

    ResponseUtils 是将字符串按照一定的规则写入到响应流中。

     

    其他的类或者方法,此处就不再细说了。使用SpringMVC 来开发接口与使用Servlet开发接口,只是二者供外部调用的接口实现方式不一样,其他的都一样!

    只要你看过java web开发(二) 接口开发 这篇文章,相信就能理解!后面会给出该工程的实例代码。

    运行效果截图如下,

    四、 补充。

     如果我们想要在jsp中显示接口数据,该如何实现呢?下面使用两种方式实现。

    首先需要实现一个方法,

     

    	@RequestMapping("/getAllStudent.dbo")
    	public ModelAndView getAllStudent(HttpServletRequest request, HttpServletResponse response,ModelMap modelMap) {
    		List<Students> list =new StudentServiceImpl().getAllStudents();
    		modelMap.addAttribute("list", list);
    		return new ModelAndView("result",modelMap);
    	}

    该方法返回一个ModelAndView,这个ModelAndView中包含返回的数据以及跳转的jsp页面。还记得我们在springmvc.xml中有一段配置文件,

     

     

    <!--配置视图解析器:如何把handler 方法返回值解析为实际的物理视图  -->
    	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    	<property name="prefix" value="/WEB-INF/views/"></property>
    	<property name="suffix" value=".jsp"></property>
    	</bean>

    其中,‘prefix’是前缀,‘suffix’是后缀,组合在一起的路径就是‘/WEB-INF/views/*.jsp’,‘*’就是我们在ModelAndView中指定的。例如上面的‘new ModelAndView("result",modelMap)’中的‘result’,那么路径全地址就是‘/WEB-INF/views/result.jsp’。
    下面我们就使用两种方法在jsp中显示数据。

     

    1. 方法1,

     

    <%@ page language="java" contentType="text/html; charset=utf-8"
    	pageEncoding="utf-8"%>
    <%@ page import="java.util.List"%>
    <%@ page import="java.util.HashMap"%>
    <%@ page import="cn.springmvc.model.Students"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<h4>Success Page</h4>
    	<%
    		List<Students> list = (List<Students>) request.getAttribute("list");
    	%>
    	<table style="width: 100%">
    		<tr>
    			<td>name</td>
    			<td>age</td>
    			<td>sex</td>
    		</tr>
    		<%
    			for (Students s : list) {
    		%>
    		<tr>
    			<td>
    				<%
    					out.print(s.name);
    				%>
    			</td>
    			<td>
    				<%
    					out.print(s.age);
    				%>
    			</td>
    			<td>
    				<%
    					out.print(s.sex);
    				%>
    			</td>
    		</tr>
    		<%
    			}
    		%>
    
    	</table>
    </body>
    </html>

    2. 方法2,

     

     

    <%@ page language="java" contentType="text/html; charset=utf-8"
    	pageEncoding="utf-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    	<table style="width: 100%">
    		<tr>
    			<td>name</td>
    			<td>age</td>
    			<td>sex</td>
    		</tr>
    		<c:forEach var="student" items="${requestScope.list}"
    			varStatus="status">
    			<tr>
    				<td><c:out value="${student.name}" /></td>
    				<td><c:out value="${student.age}" /></td>
    				<td><c:out value="${student.sex}" /></td>
    			</tr>
    		</c:forEach>
    	</table>
    
    </body>
    </html>

    该方法需要额外导入jstl-*.jar。

     

    两种方式显示的效果都一样。最后运行的效果如下图所示,

    至此,有关使用SpringMVC 开发接口就结束!由于本人水平有限,该篇文章只是讲解了目前自己接触的有关知识!如果想要了解更多,请自行查看其它文章或者视频资料!
    示例代码下载:Demo下载链接

     

    最近才开通了微信公众号,欢迎大家关注。

    展开全文
  • 支付宝开发接口文档及案例

    千次下载 热门讨论 2015-06-28 23:31:35
    支付宝开发接口文档 案例 帮助您快速上手
  • python开发接口

    千次阅读 2019-01-05 15:24:55
    一、flask开发接口简介 flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务。此外,python 运用Django 开发后台接口。本文就用flask来开发一个接口。 flask需要先安装再引用。pip install ...

    目录:第一部分flask简介,第二部分简单开发get和post接口例子

    一、flask开发接口简介

    flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务。此外,python 运用Django 开发后台接口。本文就用flask来开发一个接口。

    flask需要先安装再引用。pip install flask

    用flask开发接口的流程为:

    1.1、定义一个server

    server=flask.Flask(__name__) #__name__代表当前的python文件。把当前的python文件当做一个服务启动

    1.2、然后定义接口函数,一般函数和接口函数的区别在于,定义为接口的函数上方要特别加上:

    @server.route('/index',methods=['get','post']) #第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是get

    @server.route('/index',methods=['get','post'])#第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是get
    def index():
        res={'msg':'这是我开发的第一个借口','msg_code':0}
        return json.dumps(res,ensure_ascii=False)

    1.3、让server执行起来

    server.run(port=5001,debug=True,host='0.0.0.0')

    #port可自定义填写,默认是5000。不要与机器上已占用的port冲突。
    #debug=True,在代码进行修改后,程序会自动重新加载,不用再次运行。也就是运行一次即可,即使改动代码,也不需要重启服务
    #host本地ip地址,写0.0.0.0,可以让其他人直接访问本机的ip。
    #最终这个接口的访问地址就是  http://127.0.0.1/index  ,get方法或者post方法都可。返回数据是json格式res内容

    二、闲话少说,下面就给出例子和测试结果


    2.1、编写server_new.py,代码如下:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import subprocess
    import flask,json
    '''
    CREATE TABLE IF NOT EXISTS `my_user`(
       `auto_id` INT UNSIGNED AUTO_INCREMENT,
       `username` VARCHAR(50) NOT NULL,
       `passwd` VARCHAR(40) NOT NULL,
       `is_admin` INT,
       PRIMARY KEY ( `auto_id` )
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    '''
    server=flask.Flask(__name__) #__name__代表当前的python文件,把当前这个python文件,当成一个服务
    def excute_command(username,pwd):
        if username=='yyz':
            return "excute_command username=yyz pwd=%s" % pwd
        else:
            return "excute_command username=%s pwd=%s" % (username,pwd)
    def my_db(sql):
        import pymysql
        coon = pymysql.connect(host='127.0.0.1',user='root',passwd='y44444444',port=3306,db='test_db',charset='utf8')
        cur = coon.cursor()
        cur.execute(sql)
        if sql.strip()[:6].upper() == 'SELECT': #判断sql语句是否select开头
            res = cur.fetchall()  #获取到sql语句所有的返回结果
        else:
            coon.commit()
            res = 'ok'
        cur.close()
        coon.close()
        return res
    
    @server.route('/index',methods=['get'])  #装饰器  ip:5000/index?xxx
    def index():
        res={'msg':'这个是我开发的第一个接口','msg_code':0} #这个是字典,接口返回的是json,所以需要引入json,并且返回进行json.dumps
        return json.dumps(res,ensure_ascii=False) #返回结果是unicode,需要增加ensure_ascii=False
    @server.route('/reg',methods=['post'])
    def reg():
        try:
            date = flask.request.values.get('date')
            print "date-date",date
            course_id = int(flask.request.values.get('course_id'))
            chapter_id = int(flask.request.values.get('chapter_id'))
            subprocess.Popen("bash ./main.sh '" + str(date) + "'", shell=True)
            res = {'msg': str(date) + '执行shell成功!', 'msg_code': 0}
        except:
            res = {'msg':'参数非法,请检查接口文档!','msg_code':1001}
    
        return json.dumps(res,ensure_ascii=False)
    if __name__ == '__main__':
        server.run(port=5001,debug=True, host='0.0.0.0')   #端口号要是不指定,默认为5000.debug=True,改了代码之后不用重启,会自动重启一次。后面增加host='0.0.0.0',别人可以访问
    
    

    接口访问中,经常会需要输入参数。那么如果要接受传入的参数,则可用以下方法:

      username=flask.request.values.get('username')

    2.2、编写main.sh脚本,这里面可以进行任何种类的开发:

    #!/usr/bin/bash

    PYTHON="/usr/bin/python"

     

    function handle_function()
    {
        $PYTHON ./new_mysql.py $1
        if [ $? -ne 0 ]; then
            return 0
        fi

        return 1
    }

     

    function main()
    {
        #检查参数
        if [ $# -eq 0 ]; then
            local start_date=`date -d last-day +%Y-%m-%d`
            local end_date=`date -d "$start_date +1 day" +%Y-%m-%d`
            #local end_date=$start_date
        elif [ $# -eq 1 ]; then
            local start_date=$1
            local end_date=`date -d "$start_date +1 day" +%Y-%m-%d`
            #local end_date=$start_date
        elif [ $# -eq 2 ]; then
            local start_date=$1
            local end_date=$2
        else
            echo "Usage: bash ./main.sh 2017-05-02 2017-05-03"
            exit
        fi
        echo "success--yyz-- start_date ${start_date}"
        echo "success--yyz-- end_date ${end_date}"

        for((i=0;;i++)); do
            date_str=`date -d "$start_date +$i day" +%Y-%m-%d`
            date_str_s=`date -d "${date_str}" +%s`
            end_date_s=`date -d "${end_date}" +%s`

            echo "success--yyz-- date_str ${date_str}"
            echo "success--yyz-- end_date_s ${end_date_s}"

           if handle_function $date_str
            then
                echo "handle success"
            else
                echo "handle failed"
            fi

            if [ $date_str_s -ge $end_date_s ]; then
                    break
            fi
            done

        return 0
    }
    main $@

    2.3、运行和测试:

    之后需要在本地配置绑定host,这样便于记忆,

         vi /etc/hosts

       xxx.xxx.xxx.168 yyz.edu.com # flask interface test

    运行接口服务器:
     $python server_new.py

     * Serving Flask app "server_new" (lazy loading)
     * Environment: production
       WARNING: Do not use the development server in a production environment.
       Use a production WSGI server instead.
     * Debug mode: on
     * Running on http://0.0.0.0:5001/ (Press CTRL+C to quit)
     * Restarting with stat
     * Debugger is active!
     * Debugger PIN: 264-088-175


    测试一:在浏览器输入以下命令     http://yyz.edu.com:5001/index   ,可以看到如下界面:

     

    测试二、由于浏览器无法模拟post请求,所以才有postman等模拟工具
    http://yyz.edu.com:5001/reg?date=2018-12-28&course_id=123456&chapter_id=99999

     

    此外,curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载。curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。

    在进行web后台程序开发测试过程中,常常会需要发送url进行测试,使用curl可以方便地模拟出符合需求的url命令

    测试三、使用curl命令行测试get请求

    $ curl http://yyz.edu.com:5001/index
    {"msg": "这个是我开发的第一个接口", "msg_code": 0}

    测试四、使用curl发送POST请求:

    $ curl -d 'date=2018-12-28&course_id=123456&chapter_id=99999' http://yyz.edu.com:5001/reg
    {"msg": "2018-12-28执行shell成功!", "msg_code": 0}

    这种方法是参数直接在header里面的,如需将输出指定到文件可以通过重定向进行操作.
    curl -H "Content-Type:application/json" -X POST -d 'json data' URL

    参考:

    python简单开发接口:https://www.cnblogs.com/xiaojing2017/p/9041115.html

    python:接口开发 https://www.cnblogs.com/bendouyao/p/9019955.html

    curl 模拟 GET\POST 请求: https://blog.csdn.net/fungleo/article/details/80703365

    安装setuptools和pip过程 :https://blog.csdn.net/xingxingboke/article/details/78275757

    Linux源码安装步骤:https://www.cnblogs.com/benwu/articles/8436209.html

    Python框架 Flask 项目实战教程https://www.cnblogs.com/jsben/p/4909964.html

    展开全文
  • EasyDSS流媒体服务器软件,提供一站式的转码、点播、直播、时移回放服务,极大地简化了开发和集成...提供丰富的二次开发接口,基于JSON的封装及HTTP调用。提供播放鉴权、推流鉴权等安全保证。提供用户及相关权限管理...

    一站式的转码、点播、直播、时移回放服务,极大地简化了开发和集成的工作。其中,点播版本主要包含:上传、转码、分发。直播版本,主要包含:直播、录像, 直播支持RTMP输入,RTMP/HLS/HTTP-FLV的分发输出;录像支持自定义保存时长、检索及下载。提供丰富的二次开发接口,基于JSON的封装及HTTP调用。提供播放鉴权、推流鉴权等安全保证。提供用户及相关权限管理配置。

    一、 快速安装

    1. 下载地址
    2. 下载对应环境的安装包
    3. 解压安装包
    4. Windows下双击LiveQing.exe直接启动
    5. Linux下解压目录执行./start.sh
    6. 详见:https://blog.csdn.net/Marvin1311/article/details/88797606

    注:路径中不能包含中文

    二、 二次开发

    二次开发中,方式是在自己业务系统后端登录接口中,调用流媒体的登录接口,获取所需的sid或是token

    1. 封闭内网使用

    在业务使用,如果只是使用LiveQing提供视频分发能力,且不会对外公开接口端口10080(默认端口),可以直接将接口鉴权关闭,具体服务器登录 http://localhost:10080 默认用户名/密码 admin/admin, 在 基础配置 页面,【接口鉴权】开关。

    2. 业务系统对接

    在这里插入图片描述

    2.1 cookie方式

    注: HttpOnly = true 客户端API(例如JavaScript)无法访问仅限http的cookie。 此限制通过跨站点脚本(XSS)消除了cookie被盗的威胁。

    1. 在后端业务代码中对接,如Java/PHP/Node.js 等
    2. 调用LiveQing登录接口,接口调用成功后会在请求Headers的cookie中写入sid
    3. 取出cookie里的sid
    4. 其它接口调用时在请求头cookies中传递sid
    5. Content-Type:application/x-www-form-urlencoded
    6. 接口请求路径示例:http://localhost:10080/login

    2.1.1 前端js跨域请求示例

    客户端不必显示保存 token 到 cookie. 所有和服务的交互接口需要添加跨域配置, xhrFields: { withCredentials: true } 和 crossDomain: true,前提是服务端配置允许跨域。

    例如跨域登录接口调用示例如下:

    $.ajax({
        type: "GET",
        url: "http://other-domain:10080/login",
        xhrFields: { 
            withCredentials: true
        },
        crossDomain: true, 
        data: {
            username: 'admin',
            password: '21232f297a57a5a743894a0e4a801fc3'
        },
        success: function(data) {
            console.log(data);
        }
    })
    

    后端代码示例:Java

    2.1.2 获取sid

    import java.io.DataOutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    public class GetLoginSid {
     public static void main(String[] args) throws Exception {
            URL url = new URL("http://demo.liveqing.com:10080/login");
            
            //发起POST请求,并传递username,password参数(需要md5加密)
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    		conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestMethod("POST");      
            conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); 
            DataOutputStream out = new DataOutputStream(conn.getOutputStream());  
            String content = "username=admin&password=21232f297a57a5a743894a0e4a801fc3";
            out.writeBytes(content); 
            out.flush();  
            out.close();
            
            
            Map<String, List<String>> headerFields = conn.getHeaderFields();
    		
            Set<String> headerFieldsSet = headerFields.keySet();
    		
            Iterator<String> hearerFieldsIter = headerFieldsSet.iterator();
    
            while (hearerFieldsIter.hasNext()) {
    
                String headerFieldKey = hearerFieldsIter.next();
    
                if ("Set-Cookie".equalsIgnoreCase(headerFieldKey)) {
    
                    List<String> headerFieldValue = headerFields.get(headerFieldKey);
    
                    for (String headerValue : headerFieldValue) {						
                        String[] fields = headerValue.split(";\\s*");
                        for (int j = 0; j < fields.length; j++) {
    						if (fields[j].indexOf('=') > 0) {
                                String[] f = fields[j].split("=");
                                if ("Expires".equalsIgnoreCase(f[0])) {                        
                                     System.out.println("Expires:" + f[1]);
                                }
                                else if ("Max-Age".equalsIgnoreCase(f[0])) {                   
                                     System.out.println("Max-Age:" + f[1]);
                                }else if ("sid".equalsIgnoreCase(f[0])) {   //获取sid     
                                     System.out.println("sid:" + f[1]);
                                }
                            }
                        }
                    }
               }
            }
        }
       }
    

    运行如下
    在这里插入图片描述

    2.1.3 携带sid调用其它接口

    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class RequestOtherAPI {
    
    public static void main(String[] args) throws Exception {
            URL url = new URL("http://demo.liveqing.com:10080/live/list");
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    		conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestMethod("POST");      
            conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
    		//这里传递上一步获得sid
            conn.setRequestProperty("Cookie","sid=Hwsd2R;"); 
            DataOutputStream out = new DataOutputStream(conn.getOutputStream());  
            String content = "start=0&limit=10";
            out.writeBytes(content); 
            out.flush();  
            out.close();
            
            conn.connect();
            StringBuffer sbf = new StringBuffer();
            InputStream is = conn.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            String strRead = null;
            while ((strRead = reader.readLine()) != null) {
                sbf.append(strRead);
                sbf.append("\r\n");
            }
            reader.close();
            System.out.println(sbf.toString());
        }
       }
    

    2.2 token方式

    1. 调用登录接口获取token
    2. Content-Type:application/x-www-form-urlencoded
    3. 其它接口调用时传递附加token入参

    代码示例:Java

    2.2.1 获取token

    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class GetLoginToken {
    
    public static void main(String[] args) throws Exception {
            URL url = new URL("http://localhost:10080/login");
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    		conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestMethod("POST");      
            conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            DataOutputStream out = new DataOutputStream(conn.getOutputStream());  
            String content = "username=admin&password=21232f297a57a5a743894a0e4a801fc3";
            out.writeBytes(content); 
            out.flush();  
            out.close();
            
            conn.connect();
            StringBuffer sbf = new StringBuffer();
            InputStream is = conn.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            String strRead = null;
            while ((strRead = reader.readLine()) != null) {
                sbf.append(strRead);
                sbf.append("\r\n");
            }
            reader.close();
            System.out.println(sbf.toString());
        }
      }
    

    运行如下
    在这里插入图片描述

    2.2.2 携带token调用其它接口

    其他接口调用时,附加token入参

    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class RequestOtherAPIByToken {
    
    public static void main(String[] args) throws Exception {
            URL url = new URL("http://localhost:10080/live/list");
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    		conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestMethod("POST");      
            conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            DataOutputStream out = new DataOutputStream(conn.getOutputStream());  
            String content = "start=0&limit=10&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1Mzc3NzExNTAsInB3IjoiMjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzMiLCJ0bSI6MTUzNzY4NDc1MCwidW4iOiJhZG1pbiJ9.b1U-R-_HVKV9reWRD50327B1ztUqs3gowUGi_lDzlmU";
            out.writeBytes(content); 
            out.flush();  
            out.close();
            
            conn.connect();
            StringBuffer sbf = new StringBuffer();
            InputStream is = conn.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            String strRead = null;
            while ((strRead = reader.readLine()) != null) {
                sbf.append(strRead);
                sbf.append("\r\n");
            }
            reader.close();
            System.out.println(sbf.toString());
        }
     }
    

    运行如下
    在这里插入图片描述

    展开全文
  • 项目开发接口文档

    千次阅读 2019-03-11 10:44:13
  • 支付宝开发接口

    千次阅读 2013-09-26 16:52:57
    越来越多的人需要开发接口 这里大概介绍一下支付宝的开发接口 首先需要商家的PID和Key 获取方法:http://www.akcms.com/manual/alipay-pid-key.htm 这里告诉你怎么获取 然后就是程序开发了。这里有现成的demo...
  • 前端开发接口模拟小工具

    千次阅读 2017-11-02 09:22:35
    mock-leason简单node服务器,在前后端分离开发中,模拟 HTTP 接口数据和静态资源服务器,方便前端调试开发。前后端开发协作的过程中,为了不...为了提高前后端开发效率,前端需要自行mock数据,前端开发接口模拟小工具
  • 微信企业号开发接口文档

    千次阅读 2016-10-09 08:57:00
    微信企业号开发接口 http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5
  • 微信企业者开发接口文档

    千次阅读 2017-11-25 10:06:32
    微信企业者开发接口文档http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5
  • CAN总线应用开发接口

    千次阅读 2015-09-22 18:54:56
    由于系统将CAN设备作为网络设备进行管理,因此在CAN总线应用开发方面,Linux提供了SocketCAN接口,使得CAN总线通信近似于和以太网的通信,应用程序开发接口更加通用,也更加灵活。 此外,通过...
  • java开发接口利用http协议传输数据

    万次阅读 2016-12-09 10:15:17
    java开发接口利用http协议传输数据
  • 对外开发接口+Des加密解密

    万次阅读 热门讨论 2015-12-29 20:10:59
    小乖在各种调用别人的接口之后,在开发了一段时间的本系统之后,在没有事情做了之后,又开始给别人开发接口了,粗来的这段日子一直和接口杠上了……好在有进步,从调别人的接口到让第三方系统调我们的接口,定义接口...
  • MSN开发接口

    千次阅读 2009-05-12 10:38:00
    看到很多网站上可以直接读出你的msn上的好友并发送邀请,也可以直接发送聊天信息,用msn提供的开发接口就可以实现这样的功能.MSNHelper: ...dotMSN,它使用MSNP8
  • 微信公众平台开发接口返回码说明

    万次阅读 2017-09-06 10:55:46
    微信公众平台开发接口返回码说明 更新时间:2017-09-06
  • 后端开发接口规范

    千次阅读 2019-05-23 07:33:07
    因此制定本接口规范,规范前后端的开发标准。 参考如下接口文档格式: 接口名称:审核列表 接口描述:接口的使用场景 接口URL: {service}/rider/check/r/new/list 请求方式:get|post 请求参数(json对象)...
  • 我们在《玩转微信公众号》的视频中, 已经知道公众号分为订阅号,服务号,应用号, 微信公众号开发时, 每个公众号类型会有不同的权限。 比如在开发微信支付功能时, ...微信公众号开发接口权限与
  • 微信公众平台服务号API开发接口

    千次阅读 2014-02-20 15:35:43
    微信公众平台服务号API开发接口     目录: 简介 1 申请消息接口 1 接收用户消息 5 文本消息 5 语音消息 8 视频消息 9 地理位置消息 9 链接消息 10 消息回复 11 回复图片消息 14 回复语音消息 15 回复视频消息 16...
  • tp5开发接口:接口安全设计

    千次阅读 2019-03-19 16:05:43
    设计思想:以登陆接口为例 登陆安全接口设计 1.username = red_panda 2.password = 123456 3.时间戳 timestamp = 17988732 token = md5(api_md5(red_panda) + md5(123456) + md5(timestamp)_api); service_token...
  • 需求:利用微信公众号开发接口下载语音,展示并可以收听语音 1.利用微信公众平台开发接口下载语音文件至本机 /** * 下载多媒体文件 * @param string $mediaId * @return string */ function ...
  • SequoiaDB简介 SequoiaDB是一款分布式文档型数据库,是国内为数不多拥有自主知识产权的开源数据库。目前SequoiaDB已经在GitHub上开源。 ...SequoiaDB主要的功能特点是支持分布式...SequoiaDB开发接口 2.1API
  • 身份证阅读器已经有了,我现在做了一个网站(JAVA语言开发的),网站后台需要调用身份证信息,录入身份证信息,如何调用这个身份证阅读器的二次开发接口?是身份证阅读器厂商提供二次开发接口吗?还是如何做?没有做...
  • 如题:身份证阅读器(读卡器)谷歌Chrome和火狐Firefox浏览器端网页开发接口控件分享,这个SDK开发包兼容支持谷歌Chrome浏览器和火狐Firefox浏览器,仅PC端使用,Android和iOS端浏览器不支持使用。 测试版本: ...
  • 《移动开发接口及文档编写规范》V1.0文档说明 编写整理:童正刚 2015-05 一、概述 ü 有关接口 1、接口是纯数据的交互 APP接口是移动设备和业务之间进行通信的途径。实质就是以特定的规则通过接口直接操作...
  • 需要上传数据,获取数据 时有没有什么云服务器(比如阿里云)可以提供后台和接口的. 可以自己在控制台设置参数类型 参数名称 ,然后通过云端生成的url 获取数据 ,上传数据 这样不需要人员专门去写后台接口
  • 通信工程最常用的二次开发软件有CodeBlocks,Dev等等的编程软件; 它们的开发接口都支持C语言,C++语言。
  • 微信开发接口配置和Web开发工具

    千次阅读 2017-05-01 16:41:08
    首先申请一个微信公众开发测试账号:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login ...申请后会提供appID和appsecret,你需要在自己的代码中添加接口配置的处理。 但此处URL必须为一
  • 开发接口服务的一些总结

    万次阅读 2018-10-11 17:14:17
    博主之前做过恒丰银行代收付系统(相当于支付接口),包括现在的oltpapi交易接口和虚拟业务的对外提供数据接口。总之,当你做了很多项目写了很多代码的时候,就需要回过头来,多总结总结,这样你会看到更多之前写...
  • 想问一下微信公众平台已经绑定了有赞商城..现在想开发一点功能需要用到接口.但是有赞商城的绑定还想留着..有什么好办法吗.看过了第三方网站授权的方式...但是好像没有给用户发信息的功能
  • android开发接口文档模板

    千次阅读 2016-04-05 10:30:31
    1 接口书写的格式:1 用例图 2 流程图 3 具体的接口: 3.1请求的方式: 包括: 服务器地址 le.gxjinan.com/open/user.php?ac=login 请求方式 POST 编码格式 UTF-8 内容的格式 application/x-...
  • APP开发接口分类介绍

    千次阅读 2016-06-30 17:33:49
    App开发,是指专注于手机应用软件开发与服务。App是application的缩写,通常专指手机上的应用软件,或称手机客户端。苹果公司的App store开创了手机软件业发展的新篇章,使得第三方软件的提供者参与其中的积极性空前...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,701
精华内容 63,880
关键字:

开发接口