📜  python json 9: request向服务端发送json数据

📅  最后修改于: 2020-09-03 07:26:21             🧑  作者: Mango

本节摘要:

使用Python的request将JSON数据从客户端发布到服务器,尝试解决发布到服务器时遇到的“ 400请求错误”。

1. 建立JSON POST请求的步骤

1.1 创建一个URL对象:其实就是一个网址,示例中,我使用httpbin.org服务发布JSON数据。httpbin.org是一个Web服务,允许我们测试HTTP请求。您可以使用它来测试和检查POST请求。所以我的网址是:“ https://httpbin.org/post

1.2 确定请求方法:设置为post请求 requests.post('https://httpbin.org/post'),其他请求方式不作为本次内容。

1.3 指定POST数据:根据POST请求的HTTP规范,我们通过消息正文传递数据。数据可以是任何内容,包括JSON,字典,元组列表,字节或类似文件的对象。示例中,我将发送以下JSON数据,字典或任何Python对象形式的数据,则可以将其转换为JSON

{'id': 1, 'name': 'Jessa Duggar'} 

1.4 向服务器发送请求模块提供了一个json参数,我们可以使用该参数在POST方法中指定发送JSON数据。

requests.post('https://httpbin.org/post', json={'id': 1, 'name': 'Jessa'})

2. 示例

按照1中的步骤我们能够向服务器发送数据,在1.4中我们直接使用了json参数。

import requests

response = requests.post('https://httpbin.org/post', json={'id': 1, 'name': 'Jessa'})

print("Status code: ", response.status_code)
print("Printing Entire Post Request")
print(response.json())

返回结果如下:

Status code:  200
Printing Entire Post Request
{'args': {}, 
'data': '{"id": 1, "name": "Jessa"}', 
'files': {}, 'form': {}, 
'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 
'Content-Length': '26', 
'Content-Type': 'application/json', 
'Host': 'httpbin.org', 
'User-Agent': 'python-requests/2.21.0'}, '
json': {'id': 1, 'name': 'Jessa'}, 
'origin': 'xxx.xx.xx.xx, xxx.xx.xx.xx', 'url': 'https://httpbin.org/post'}

如果我们不使用json参数,那我们还可以通过一下方式操作

通过指定正确的请求标头,以便请求模块可以将数据序列化为正确的Content-Type标头格式。在这种情况下,我们不需要使用json参数。这对于较旧的版本很有用

import requests
newHeaders = {'Content-type': 'application/json', 'Accept': 'text/plain'}
response = requests.post('https://httpbin.org/post', data={'id': 1, 'name': 'Jessa'},headers=newHeaders)
print("Status code: ", response.status_code)
response_Json = response.json()
print("Printing Post JSON data")
print(response_Json['data'])
print("Content-Type is ", response_Json['headers']['Content-Type'])

返回值如下:

Status code:  200
Printing Post JSON data
id=1&name=Jessa
application/json

3. 使用postman测试JSON POST 请求

最好的做法是使用postman来验证JSON数据,测试您的请求及其消息正文,你需要添加Postman扩展程序或安装postman应用程序。

选择“ POST请求”,然后输入服务POST操作URL。

单击标题。在键列中输入Content-Type,在值列中输入application/json

单击主体部分,然后单击原始单选按钮。输入您的JSON数据。单击发送按钮。