-
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
fireturn 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"
fiif [ $date_str_s -ge $end_date_s ]; then
break
fi
donereturn 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
-
视频点播视频直播中二次开发接口对接说明示列
2019-06-17 17:08:48EasyDSS流媒体服务器软件,提供一站式的转码、点播、直播、时移回放服务,极大地简化了开发和集成...提供丰富的二次开发接口,基于JSON的封装及HTTP调用。提供播放鉴权、推流鉴权等安全保证。提供用户及相关权限管理...一站式的转码、点播、直播、时移回放服务,极大地简化了开发和集成的工作。其中,点播版本主要包含:上传、转码、分发。直播版本,主要包含:直播、录像, 直播支持RTMP输入,RTMP/HLS/HTTP-FLV的分发输出;录像支持自定义保存时长、检索及下载。提供丰富的二次开发接口,基于JSON的封装及HTTP调用。提供播放鉴权、推流鉴权等安全保证。提供用户及相关权限管理配置。
一、 快速安装
- 下载地址
- 下载对应环境的安装包
- 解压安装包
- Windows下双击LiveQing.exe直接启动
- Linux下解压目录执行./start.sh
- 详见: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被盗的威胁。
- 在后端业务代码中对接,如Java/PHP/Node.js 等
- 调用LiveQing登录接口,接口调用成功后会在请求Headers的cookie中写入sid
- 取出cookie里的sid
- 其它接口调用时在请求头cookies中传递sid
- Content-Type:application/x-www-form-urlencoded
- 接口请求路径示例: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方式
- 调用登录接口获取token
- Content-Type:application/x-www-form-urlencoded
- 其它接口调用时传递附加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:35mock-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:17java开发接口利用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对象)... -
微信公众号开发接口权限与次数限制-微信开发教程13
2017-09-23 07:27:19我们在《玩转微信公众号》的视频中, 已经知道公众号分为订阅号,服务号,应用号, 微信公众号开发时, 每个公众号类型会有不同的权限。 比如在开发微信支付功能时, ...微信公众号开发接口权限与 -
微信公众平台服务号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... -
微信公众号开发接口语音下载解决方案
2014-03-27 00:06:01需求:利用微信公众号开发接口下载语音,展示并可以收听语音 1.利用微信公众平台开发接口下载语音文件至本机 /** * 下载多媒体文件 * @param string $mediaId * @return string */ function ... -
【最佳实践】如何选择SequoiaDB开发接口?
2018-01-12 09:21:00SequoiaDB简介 SequoiaDB是一款分布式文档型数据库,是国内为数不多拥有自主知识产权的开源数据库。目前SequoiaDB已经在GitHub上开源。 ...SequoiaDB主要的功能特点是支持分布式...SequoiaDB开发接口 2.1API -
基于JAVA,身份证阅读器二次开发接口如何调用?
2015-03-30 10:04:42身份证阅读器已经有了,我现在做了一个网站(JAVA语言开发的),网站后台需要调用身份证信息,录入身份证信息,如何调用这个身份证阅读器的二次开发接口?是身份证阅读器厂商提供二次开发接口吗?还是如何做?没有做... -
身份证阅读器(读卡器)谷歌Chrome和火狐Firefox浏览器端网页开发接口控件分享
2017-08-16 12:36:42如题:身份证阅读器(读卡器)谷歌Chrome和火狐Firefox浏览器端网页开发接口控件分享,这个SDK开发包兼容支持谷歌Chrome浏览器和火狐Firefox浏览器,仅PC端使用,Android和iOS端浏览器不支持使用。 测试版本: ... -
《移动开发接口及文档编写规范》V1.0
2015-05-26 16:17:43《移动开发接口及文档编写规范》V1.0文档说明 编写整理:童正刚 2015-05 一、概述 ü 有关接口 1、接口是纯数据的交互 APP接口是移动设备和业务之间进行通信的途径。实质就是以特定的规则通过接口直接操作... -
app开发 接口有云端自动提供的吗
2020-08-26 16:40:21需要上传数据,获取数据 时有没有什么云服务器(比如阿里云)可以提供后台和接口的. 可以自己在控制台设置参数类型 参数名称 ,然后通过云端生成的url 获取数据 ,上传数据 这样不需要人员专门去写后台接口了 -
你所在的专业最常用的支持二次开发软件是什么?它的开发接口都支持什么编程语言?
2017-10-26 11:13:22通信工程最常用的二次开发软件有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交易接口和虚拟业务的对外提供数据接口。总之,当你做了很多项目写了很多代码的时候,就需要回过头来,多总结总结,这样你会看到更多之前写... -
微信公众平台开发接口问题
2015-06-04 01:42:43想问一下微信公众平台已经绑定了有赞商城..现在想开发一点功能需要用到接口.但是有赞商城的绑定还想留着..有什么好办法吗.看过了第三方网站授权的方式...但是好像没有给用户发信息的功能 -
android开发接口文档模板
2016-04-05 10:30:311 接口书写的格式:1 用例图 2 流程图 3 具体的接口: 3.1请求的方式: 包括: 服务器地址 le.gxjinan.com/open/user.php?ac=login 请求方式 POST 编码格式 UTF-8 内容的格式 application/x-... -
APP开发接口分类介绍
2016-06-30 17:33:49App开发,是指专注于手机应用软件开发与服务。App是application的缩写,通常专指手机上的应用软件,或称手机客户端。苹果公司的App store开创了手机软件业发展的新篇章,使得第三方软件的提供者参与其中的积极性空前...
-
30个生涯锦囊,带你跳出迷茫,找到适合你的职业方向
-
Java项目记录
-
欧美绿色食品销售模板
-
查看编译后安卓源码软件工具jd-gui-windows-1.6.6.zip
-
简单的Gif动画制作软件.rar
-
【2021】UI自动化测试框架(Selenium3)
-
电商设计专业思维
-
前端性能优化
-
性能测试面面观
-
儿童游乐园网页模板
-
Matlab新版S-Function Builder使用总结
-
JavaEE框架(Maven+SSM)全程实战开发教程(源码+讲义)
-
字符串转换工具 v2.5.4 Build 08.04.rar
-
HTML+CSS鲨鱼动态.zip
-
智联万物,京东IoT技术创新与实践
-
dt-blob.bin
-
Java无损导出及转换word文档
-
软件工程 实践者的研究方法 第29章答案
-
get_tbk_goods_info.php(根据淘宝客地址获取商品信息)
-
【数据分析-随到随学】数据分析建模和预测