调用
调用网络API通常是通过HTTP来做的,对于TD这种上位机软件来说,可以直接选择GET、POST这些方式,通过地址传入参数。一般的形式是地址后面加'?'然后跟参数名=值,不同的参数之间通过‘&’连接,例如
地址?参数名1=值1&参数名2=值2......
例如调用心知天气的API,可以查到官方的文档是这样的

TD
所以在TD可以新建一个web client,在URL填入https://api.seniverse.com/v3/weather/now.json,方法选择GET

然后新建一个table在里面按照文档说明写入参数,传入OP里

点request就可以获取了,TD会自动用上面提到的把参数链接起来。
ESP32
对于ESP32这种没有这样工具的东西来调用的,话这些就要手动生成字符串了,类似这样

其实就是先连接上服务器,地址是根地址。然后GET方法其实就是一个特定的字符串
GET url HTTP/1.1
Host: host
connection: close
然后就会收到服务器返回的数据
返回数据
一般来说API返回的都是JSON格式的
TD
在TD里面,可以用TDJ来解析,例如这样
TDJ = op.TDModules.mod.TDJSON
json_data = TDJ.textToJSON(data)
op('table2')[0,0]= json_data['results'][0]['location']['name']
op('table2')[1,0]= json_data['results'][0]['now']['text']
op('table2')[2,0]= json_data['results'][0]['now']['temperature']
还可以用datToJSON(dat, orderedDict=True, showErrors=False)来转换,具体可以看这里https://docs.derivative.ca/TDJSON
ESP32
可以用ArduinoJSON这个库。

网友评论