首页 > 百度 > 百度智能云的API-易语言版SDK调用

百度智能云的API-易语言版SDK调用

2021-02-20 百度 118 ℃ 0 评论
bcc鉴权 -共享

朋友让测试个API调用。

看了下是百度智能云的API

一般如果只是查IP的话调用IP138就可以了,用百度智能云可能为了更准确。

看了下百度的智能云市场,很多API的确有用。

比如这ISBN查询。

做图书导购网站,做图书管理系统就很方便,价格的话有点贵,做精品的话能接受。

仔细看了下,百度云的API调用比较复杂,很容易出错。官方的文档也不是很清楚,甚至的有地方含糊不清,很容易出错。

官方的文档地址:https://cloud.baidu.com/doc/Reference/s/6k6yfh1he

好在官方贴心的做了SDK

当然了,肯定没有易语言的。

签名计算的工作原理

对百度智能云的API请求包含了如下流程:
  1. 创建前缀字符串(authStringPrefix)。

     
  2. 创建规范请求(canonicalRequest),即待签名字符串,在此过程中可同时确定签名头域(signedHeaders)。

     
  3. 使用您的智能云秘密访问密钥(SK)与前缀字符串(authStringPrefix),通过HMAC算法计算出派生签名密钥(signingKey)。

     
  4. 使用派生签名密钥规范请求进行签名计算,得到最终的签名摘要

     
  5. 前缀字符串和上一步生成的签名摘要拼接为认证字符串,并添加到API请求的标头(Header)中或者添加到查询字符串参数。

AK(Access Key ID)/SK(Secret Access Key)和淘宝开放平台的appkeyappsecret一个意思。

1创建前缀字符串(authStringPrefix)

AK就是后台获取的。

Utctime就是gmt时间,北京时间减去8小时。

如:

_utcTime = “2021-02-03T17:41:42Z”

用精易模块可以可以直接取

  1. 第二步这里规范请求头是最容易出错的,在这里大华调试了很久。

官方文档给出的是

\n”是换行,在易语言里用字符(10)表示

而且此API的请求参数query不需要填写

因此这里Querystring就用不到了,代码里我是直接跳过去了,为了适合其它API,还是应该加上。这里为了演示更加清楚,就不加了。

这一步里有个比较麻烦的是对header编码,官方提供了长长的教程,仔细阅读后,大华选择最低编码。也就是默认编码,只编码host。这里特别容易出错。选择不同的编码,要改很多内容。有兴趣的可以自己试试。出现验签名不一致,基本都是这样的问题。

  1. 生成signingKey

这个没什么难度,主要就是一个HMAC_SHA256_HEX的的算法。

精易模块里没有这个算法,网上找了很多都是调用JS版本的。扒了以前写支付宝验签的时候收集的源码,有这个算法。

想简单的用网上找到的js版也是没问题的。使用的时候别忘记启动com库即可。

需要注意的点是appsecret是作为密钥,别弄反了。其它语言会把秘钥放第一个参数,易语言的很多是放第二个参数。

  1. 要上一步得到的key作为秘钥加密规范请求得到签名

     
  2. 最后得到认证字符串。

到这一步的话验签部分就算是完成了。

提交给百度服务器。

先生成json,支持ipv4ipv6

接着进行验签

这里的参数来源API文档

网络提交的时候因为设置header,这里用精易模块就不是很方便了,推荐使用鱼刺http

因为我们之前的验签的编码只选择了host,因此x-bce-date就不需要编码了。

协议头的大小写不能出错。

得到的结果

多利用现成的接口能够有效的提升开发效率。

另外大华cps模块也基本封装完毕,继续为淘客事业添砖加瓦。

本文TAG:

欢迎评论

大华日记