从POST请求Python获取JSON响应

时间:2017-02-18 09:24:44

标签: python json

我目前正在向服务器发帖:

req = urllib2.Request('http://xxx.xxx.xx.xx/upload/')
req.add_header('Content-Type', 'application/json')
response = urllib2.urlopen(req, json_string)
print(response.getcode())

我得到了200代码但是我想读取服务器发回的JSON。我该怎么做呢? (为了避免使用请求库而绑定)

2 个答案:

答案 0 :(得分:0)

我没有得到代码,因为我没有网址。 尝试:

req = urllib2.Request('http://xxx.xxx.xx.xx/upload/')
req.add_header('Content-Type', 'application/json')
response = urllib2.urlopen(req, json_string)
print(response.read())

答案 1 :(得分:0)

要从响应中获取实际的json对象,而不仅仅是json序列化字符串,您需要使用json库解析响应

import json
req = urllib2.Request('http://xxx.xxx.xx.xx/upload/')
req.add_header('Content-Type', 'application/json')
response = urllib2.urlopen(req, json_string)
json_response = json.loads(response.read().decode('ascii'))

编码也可能是utf-8,具体取决于服务器发回给你的内容。

或者您可以使用我发现更容易与之互动的requests库,您需要单独安装它pip install requests

import requests, json
response = requests.post('http://xxx.xxx.xx.xx/upload', data={'data': json_string})
if response.ok:
    response_json = response.json()
else:
    print('Something went wrong, server sent code {}'.format(response.status_code))

requests library docs