📅  最后修改于: 2020-09-03 07:26:21             🧑  作者: Mango
本节摘要:
使用Python的request将JSON数据从客户端发布到服务器,尝试解决发布到服务器时遇到的“ 400请求错误”。
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'})
按照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
最好的做法是使用postman来验证JSON数据,测试您的请求及其消息正文,你需要添加Postman扩展程序或安装postman应用程序。
选择“ POST请求”,然后输入服务POST操作URL。
单击标题。在键列中输入Content-Type
,在值列中输入application/json
。
单击主体部分,然后单击原始单选按钮。输入您的JSON数据。单击发送按钮。