• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[山海师] [山海师][教程] 教你看懂HTTP API文档(一)----去追赶摊贩的第N... [复制链接]

1#
大家好,我是山海师。
某天,我在逛论坛的时候,忽然一股神秘的力量袭来,眼前一黑晕了过去……

等我醒过来的时候,我发现我成了一名城管!!

现在我正在追赶一个叫【老狼】的摊贩,我隐约觉得只要我抓到他,就能出任CEO,迎娶白富美,从此走上人生巅峰

想想心里还有点小激动

在追赶的过程中,脑中忽然闪过一道白光,写下了这篇帖子






实际开发中往往需要对接一些第三方的api接口,这些第三方的服务基本上也都有提供出完整的接口文档,但是不少同学都表示看不懂这些文档

看不懂就封装不来,就得到处求人帮忙封装代码,这无疑拖慢了开发进度,加大了开发成本,钱包表示不答应。

这篇帖子就是来简单的说明下接口文档要怎么看?



用百度AI的通用文字识别OCR文档来做范例




一份文档主要由这么几个部分组成
1、请求方法
2、请求的URL
3、请求的Header
4、请求内容
5、返回内容

不同文档可能存在不同的描述,但是都是大同小异触类旁通


请求方法
常见的方法有 GetPost,对应的按键上的命令就是 Url.HttpGetUrl.HttpPost

范例中用的方法就是 Post

此外还有 Put Delete Option 等等方法,这类方法在国内的api中不是很常见,按键官方命令中暂时也不支持




请求Url
这个顾名思义就是要请求的网址了

范例中请求的地址就是 https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic
对应按键命令 Url.HttpPost 中的 url 参数

范例中还有一个名为 access_token 的Url参数,是需要合并写到请求网址上,使用 ? 来连接参数以及值,所以完整的请求Url是这个
  1. Dim access_token = "你的access_token的值"
  2. data["url"] = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" & access_token
复制代码
具体的参数的值就按照文档说明去获取就行
多个参数之间用 & 符号连接:key1=value1&key2=value2




请求Header
每个http的请求都会附带上一些Header信息以便对请求进行一些信息的说明

范例中的请求头 Content-Type 就表示请求的内容使用 x-www-form-urlencoded 方式
在按键命令中只要附带上这个Header参数就行:
  1. Dim data = {null}
  2. Dim access_token = "你的access_token的值"
  3. data["url"] = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" & access_token
  4. data["header"] = {"Content-Type":"application/x-www-form-urlencoded"}

  5. Url.HttpPost(data)
复制代码
请求内容
这里就是指要发送给服务器具体的信息,请求头中 Content-Type 的值决定了请求内容是什么格式
application/x-www-form-urlencoded:以key=value的方式经过url编码后发送
multipart/form-data:以表单的形式发送数据到服务器,这种类型可以发送文件
application/json:以JSON字符串的格式发送数据到服务器


范例中的请求用的就是 application/x-www-form-urlencoded 类型,所以需要把我们要传入的参数和值用key=value的形式连接起来
代码如下:
  1. Dim data = {null}
  2. Dim access_token = "你的access_token的值"
  3. data["url"] = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" & access_token
  4. data["header"] = {"Content-Type":"application/x-www-form-urlencoded"}
  5. data["data"] = "image=https://wx3.sinaimg.cn/orj360/0033ImPzly1gzolsnlz72j60u01cvjwp02.jpg"

  6. Url.HttpPost(data)
复制代码
返回内容
常见的api返回是JSON格式的字符串,我们在读取了返回自己用Cjson命令来把字符串转换成键值表来使用
  1. Import "Cjson"

  2. Dim data = {null}
  3. Dim access_token = "你的access_token的值"
  4. data["url"] = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" & access_token
  5. data["header"] = {"Content-Type":"application/x-www-form-urlencoded"}
  6. data["data"] = "image=https://wx3.sinaimg.cn/orj360/0033ImPzly1gzolsnlz72j60u01cvjwp02.jpg"

  7. Dim t
  8. Dim ret = Url.HttpPost(data)
  9. If ret <> "" Then
  10. t = Cjson.Decode(ret)
  11. TracePrint t["words_result"][1]["words"]
  12. End If
复制代码
我们在获取到返回值后最好先进行判断一下是否为空,防止请求失败返回空后直接进行cjson转换报错。

当然,也有部分的api返回的是普通的html的内容,这个可以具体参考api的文档说明来做相应的处理就好了。





当写完这篇帖子的时候,我看了下时间,发现消耗了我足足一分钟!!




看来我要抓紧时间去追赶小摊贩了,下次有空再来写第二篇

    已有1评分我要评分查看所有评分

    2#

    前排支持山老师~

    3#

    支持一下

    4#

    支持支持

    5#

    有点看不懂的样子

    6#

    不支持PC端吗

    发新话题 回复该主题