api模拟接口(api接口使用教程)

4747 461 2022-11-13


本文目录一览:

游戏API接口是什么?看到一个网站大雄游戏介绍是做游戏API接口的,不知道具体是怎么操作的。

应用程序接口(API:application programming interface)是一组定义、程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。程序员通过使用 API 函数开发应用程序,从而可以避免编写无用程序,以减轻编程任务。

API 同时也是一种中间件,为各种不同平台提供数据共享。根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将 API 分为四种类型:

远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。

标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。

文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。

信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。

当前应用于 API 的标准包括 ANSI 标准 SQL API。另外还有一些应用于其它类型的标准尚在制定之中。API 可以应用于所有计算机平台和操作系统。这些 API 以不同的格式连接数据(如共享数据缓存器、数据库结构、文件框架)。每种数据格式要求以不同的数据命令和参数实现正确的数据通信,但同时也会产生不同类型的错误。因此,除了具备执行数据共享任务所需的知识以外,这些类型的 API 还必须解决很多网络参数问题和可能的差错条件,即每个应用程序都必须清楚自身是否有强大的性能支持程序间通信。相反由于这种 API 只处理一种信息格式,所以该情形下的信息交付 API 只提供较小的命令、网络参数以及差错条件子集。正因为如此,交付 API 方式大大降低了系统复杂性,所以当应用程序需要通过多个平台实现数据共享时,采用信息交付 API 类型是比较理想的选择。

API 与图形用户接口(GUI)或命令接口有着鲜明的差别:API 接口属于一种操作系统或程序接口,而后两者都属于直接用户接口。

有时公司会将 API 作为其公共开放系统。也就是说,公司制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式 API。

如何使用百度云API接口

学习了百度云盘文件API接口的使用;初步是想做一个在线android应用,应用中的文档是存放在百度云盘的。

主要是分一下几个步骤:

1.注册百度账号

2.登录百度开发者中心

3.创建移动应用,获取对应的(API Key Secret Key)

4.开通pcs API权限

5.获取ACCESS_token(认证编码)

6.开发应用

注意:

开通移动应用,获取key

获取token的时候我使用的安卓获取的方式

通过我写对应api的例子我发现,其实就两种情况:一种是get方式提交数据,另外一种是post方式提交数据

1.get方式提交数据,我们用获取云盘的信息为例:

获取云盘信息前我们要知道,我们要准备好什么数据:

请求参数:

url: 标明我们要访问的网址路径 值固定问""

method:标明我们是请求云盘信息 值固定为"info"

acceess_token:准入标识 值是我们自己申请的

接收返回参数:

quota:云盘总容量

used:云盘使用容量

request_id:该请求的表示,没啥用

返回的一个json串如下格式:{"quota":123794882560, "used":83573494688,"request_id":2853739529}

我在做的时候你使用Gson工具将json串转换到对应的entity类中了 代码如下:

[html] /**

* @param URLConnection conn通过get方式获取StringBuffer

* @return

*/

private StringBuffer getJsonString(URLConnection conn) {

InputStreamReader isr = null;

BufferedReader br = null;

StringBuffer sb = null;

try {

isr = new InputStreamReader(conn.getInputStream(),"gb2312");

br = new BufferedReader(isr);

String line = null;

sb = new StringBuffer();

while ((line = br.readLine()) != null) {

sb.append(line);

sb.append("\r\n");

}

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

if(isr!=null)

isr.close();

} catch (IOException e) {

System.out.println("流关闭是异常");

e.printStackTrace();

}

}

return sb;

}

/**

* @return

* @throws Exception

* 获取云空间的信息

*/

public CloudInfo getCloudInfo() throws Exception {

URL u = new URL("?method=infoaccess_token=你申请的token的值";

URLConnection conn = u.openConnection();// 打开网页链接

// 获取用户云盘信息

String cloudJson = this.getJsonString(conn)。toString();

// 解析成对象 下面有这个实体对象的类

Gson gson = new Gson();

CloudInfo cloudInfo = gson.fromJson(cloudJson, CloudInfo.class);

System.out.println("云盘信息:"+cloudInfo);

return cloudInfo;

}

/**

* @param URLConnection conn通过get方式获取StringBuffer

* @return

*/

private StringBuffer getJsonString(URLConnection conn) {

InputStreamReader isr = null;

BufferedReader br = null;

StringBuffer sb = null;

try {

isr = new InputStreamReader(conn.getInputStream(),"gb2312");

br = new BufferedReader(isr);

String line = null;

sb = new StringBuffer();

while ((line = br.readLine()) != null) {

sb.append(line);

sb.append("\r\n");

}

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

if(isr!=null)

isr.close();

} catch (IOException e) {

System.out.println("流关闭是异常");

e.printStackTrace();

}

}

return sb;

}

/**

* @return

* @throws Exception

* 获取云空间的信息

*/

public CloudInfo getCloudInfo() throws Exception {

URL u = new URL("?method=infoaccess_token=你申请的token的值";

URLConnection conn = u.openConnection();// 打开网页链接

// 获取用户云盘信息

String cloudJson = this.getJsonString(conn)。toString();

// 解析成对象 下面有这个实体对象的类

Gson gson = new Gson();

CloudInfo cloudInfo = gson.fromJson(cloudJson, CloudInfo.class);

System.out.println("云盘信息:"+cloudInfo);

return cloudInfo;

}

[html] package com.entity;

import java.lang.reflect.Type;

/**

* @author ydcun 获取云空间的信息 例如:

* {"quota":123794882560, 空间配额,单位为字节

* "used":83573494688, 已使用空间大小 单位为字节。

* "request_id":2853739529}

*/

public class CloudInfo{

private Double quota;

private Double used;

private Double request_id;

/**

* @return the quota 空间配额,单位为字节

*/

public Double getQuota() {

return quota;

}

/**

* @param quota the quota to set 空间配额,单位为字节

*/

public void setQuota(Double quota) {

this.quota = quota;

}

/**

* @return the used 已使用空间大小 单位为字节

*/

public Double getused() {

return used;

}

/**

* @param used the used to set 已使用空间大小 单位为字节

*/

public void setused(Double used) {

this.used = used;

}

/**

* @return the request_id

*/

public Double getRequest_id() {

return request_id;

}

/**

* @param request_id the request_id to set

*/

public void setRequest_id(Double request_id) {

this.request_id = request_id;

}

@Override

public String toString() {

return new StringBuffer()。append("空间容量:")。append(this.getQuota()/1024/1024)。append("M; 已用:")。append(this.getused()/1024/1024)。append("M; ")。toString();

}

}

package com.entity;

import java.lang.reflect.Type;

/**

* @author ydcun 获取云空间的信息 例如:

* {"quota":123794882560, 空间配额,单位为字节

* "used":83573494688, 已使用空间大小 单位为字节。

* "request_id":2853739529}

*/

public class CloudInfo{

private Double quota;

private Double used;

private Double request_id;

/**

* @return the quota 空间配额,单位为字节

*/

public Double getQuota() {

return quota;

}

/**

* @param quota the quota to set 空间配额,单位为字节

*/

public void setQuota(Double quota) {

this.quota = quota;

}

/**

* @return the used 已使用空间大小 单位为字节

*/

public Double getused() {

return used;

}

/**

* @param used the used to set 已使用空间大小 单位为字节

*/

public void setused(Double used) {

this.used = used;

}

/**

* @return the request_id

*/

public Double getRequest_id() {

return request_id;

}

/**

* @param request_id the request_id to set

*/

public void setRequest_id(Double request_id) {

this.request_id = request_id;

}

@Override

public String toString() {

return new StringBuffer()。append("空间容量:")。append(this.getQuota()/1024/1024)。append("M; 已用:")。append(this.getused()/1024/1024)。append("M; ")。toString();

}

}

2.通过post方式提交 我用上传单个文件为例子:

同样我们也先了解下上传文件要参数设置:

请求参数:

url: 标明我们要访问的网址路径 值固定问""

method:标明我们是请求云盘信息 值固定为"upload"

acceess_token:准入标识 值是我们自己申请的

path:是我们要上传到云盘的那个路径下 如/apps/myBaiduCloud/ myBaiduCloud是我们的应用名称(当你获取koten后就会自动生成以你应用名称为名的文件夹)

file:这个就是我们要上传的文件了(要求用post方式上传)

ondup:可选参数,标识当有重名的文件的时候处理方式具体见api

接收返回参数:

返回的也是json串,

path:为我们上传的文件保存的全路径

size:文件的大小有多少字节

ctime/mtime:文件的创建修改时间

其他参数介绍点小标题去api中查看

{

"path" : "/apps/album/README.md"

"size" : 372121,

"ctime" : 1234567890,

"mtime" : 1234567890,

"md5" : "cb123afcc12453543ef",

"fs_id" : 12345,

"request_id":4043312669

}

我在做的时候也是将其封装到实体类中了,这里和上面一样不详述,我们重点看下提交文件是怎么提交的代码如下:

[java] /**

* @param path 云盘存放路径

* @param name 要上传的文件

* @return

* @throws Exception

*/

public FileBase uploadFile(String path,File file) throws Exception{

//模拟文件

String fileName="README.md";

file = new File(fileName);

path="%2fapps%2fmybaidu%2f"; // 我用的是url编码过源码为:- "/apps/mybaidu/

/"

//将需要url传值的参数和url组装起来

String u =""+path+file.getName()+"method=uploadaccess_token=你自己申请的token值";

PostMethod filePost = new PostMethod(u);

//post提交的参数

Part[] parts = {new FilePart(fileName,file)};

//设置多媒体参数,作用类似form表单中的enctype="multipart/form-data"

filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));

HttpClient clients = new HttpClient();

//响应代码

int status = clients.executeMethod(filePost);

System.out.println("成功上传"+path+fileName);

BufferedReader buReader = new BufferedReader(new InputStreamReader(filePost.getResponseBodyAsStream(),"utf-8"));

StringBuffer sb = new StringBuffer();

String line;

while((line=buReader.readLine())!=null){

sb.append(line);

}

buReader.close();

// 解析成对象

Gson gson = new Gson();

FileBase cloudInfo = gson.fromJson(sb.toString(), FileBase.class);

return cloudInfo;

}

/**

* @param path 云盘存放路径

* @param name 要上传的文件

* @return

* @throws Exception

*/

public FileBase uploadFile(String path,File file) throws Exception{

//模拟文件

String fileName="README.md";

file = new File(fileName);

path="%2fapps%2fmybaidu%2f"; // 我用的是url编码过源码为:- "/apps/mybaidu/

/"

//将需要url传值的参数和url组装起来

String u =""+path+file.getName()+"method=uploadaccess_token=你自己申请的token值";

PostMethod filePost = new PostMethod(u);

//post提交的参数

Part[] parts = {new FilePart(fileName,file)};

//设置多媒体参数,作用类似form表单中的enctype="multipart/form-data"

filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));

HttpClient clients = new HttpClient();

//响应代码

int status = clients.executeMethod(filePost);

System.out.println("成功上传"+path+fileName);

BufferedReader buReader = new BufferedReader(new InputStreamReader(filePost.getResponseBodyAsStream(),"utf-8"));

StringBuffer sb = new StringBuffer();

String line;

while((line=buReader.readLine())!=null){

sb.append(line);

}

buReader.close();

// 解析成对象

Gson gson = new Gson();

FileBase cloudInfo = gson.fromJson(sb.toString(), FileBase.class);

return cloudInfo;

}

上面代码成功后我们就会在/apps/mybaidu/目录下找到README.md文件

commons-codec-1.3.jar

commons-

commons-logging.jar

gson-2.2.1.jar

jsoup-1.6.3.jar


PHP如何模拟安卓设备,请求API接口的数据?


模拟的时候,在头信息中携带这些参数。可以用插件,调试API接口很方便。方法很多,看的POST请求还是GET请求,CURL扩展可以实现。

API接口是什么意思

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。API除了有应用“应用程序接口”的意思外,还特指 API的说明文档,也称为帮助文档。



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:mybatisplus的公共字段插入的实现
下一篇:怎么测试websocket接口的简单介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~