最近测试Python调用RestfulApi,解析JSON,使用相应的库后,很简单
程序流程:使用Python从Restful Api接口获取一个Json串,解析并将Json的count值加1,转码Json为Url参数格式,调用更新Api传回服务器。
Json参考定义:
{
"app":"agile-iot.com python test",
"count":1
}
Java版Restful Api定义参考:
@RestController
@RequestMapping
@Slf4j
public class PyInfoController {
private String jsonData = "{ \"app\":\"agile-iot.com python test\", \"count\":1}";
@RequestMapping("/api/v1/py/getJsonData")
public String getJsonData(String jsonName) {
log.info("getJsonData:" + jsonName);
return jsonData;
}
@RequestMapping("/api/v1/py/setJsonData")
public String setJsonData(String jsonName, String jsonData) {
log.info("setJsonData:" + jsonName + ",jsonData:" + jsonData);
this.jsonData = jsonData;
return "setJsonData Ok";
}
}
Python调用示例参考:
import urllib,httplib2,json
from urllib.parse import quote
http = httplib2.Http()
headers = {'Content-type': 'application/x-www-form-urlencoded'}
url = 'http://agile-iot.com:8080/api/v1/py/getJsonData?jsonName=appTest'
response, content = http.request(url, 'POST', headers=headers)
print (content)
r = json.loads(content)
r["count"] = r["count"]+1
url = "http://agile-iot.com:8080/api/v1/py/setJsonData?jsonName=appTest&jsonData="+quote(json.dumps(r));
print (url)
response, content = http.request(url, 'POST', headers=headers)
print (content)
主要python库:urllib,httplib2,json