如何在python中发送POST请求并获得正确的json响应?

时间:2017-10-09 06:35:49

标签: python post python-requests

我想在python中获取POST Web服务数据。为此,我尝试了下面的内容:

import requests
import json

headers = {'content-type': 'application/json','charset': 'utf-8'}
url = 'https://a.b.c.com/count/WebService.asmx/ReadJSON'
data = {'tick': '123456A123456B'}
response = requests.post(url, data=json.dumps(data), headers=headers)
print response.status_code
print response.text

以上代码输出:

200
{"a":""}

但实际上,键“a”有一些价值,我没有得到。我不明白它给我的状态代码为200即好,那么为什么我无法得到正确的JSON响应。我在代码中遗漏了什么吗?

1 个答案:

答案 0 :(得分:4)

您应该使用json=data在请求中传递json,但不能手动修改标头,如果确定结果,则应使用response.json()获取json结果。

import requests

headers = {'charset': 'utf-8'}
url = 'https://a.b.c.com/count/WebService.asmx/ReadJSON'
data = {'tick': '123456A123456B'}
response = requests.post(url, json=data, headers=headers)
print response.status_code
print response.json()