Python3:JSON无请求POST请求库
我想只使用本机Python库将JSON编码的数据发送到服务器。我喜欢请求,但我就是不能使用它,因为我不能在运行脚本的机器上使用它。我需要做这件事Python3:JSON无请求POST请求库,python,json,urllib,Python,Json,Urllib,我想只使用本机Python库将JSON编码的数据发送到服务器。我喜欢请求,但我就是不能使用它,因为我不能在运行脚本的机器上使用它。我需要做这件事 newConditions = {"con1":40, "con2":20, "con3":99, "con4":40, "password":"1234"} params = urllib.parse.urlencode(newConditions) params = params.encode('utf-8') req = urllib.req
newConditions = {"con1":40, "con2":20, "con3":99, "con4":40, "password":"1234"}
params = urllib.parse.urlencode(newConditions)
params = params.encode('utf-8')
req = urllib.request.Request(conditionsSetURL, data=params)
urllib.request.urlopen(req)
我的服务器是本地WAMP服务器。我总是得到一份工作
urllib.error.HTTPError:HTTP错误500:内部服务器错误
我100%确信这不是服务器问题,因为相同的数据、相同的url、相同的机器、相同的服务器与请求库和邮递员一起工作。您不是发布JSON,而是发布
应用程序/x-www-form-urlencoded
请求
编码为JSON并设置正确的标题:
import json
newConditions = {"con1":40, "con2":20, "con3":99, "con4":40, "password":"1234"}
params = json.dumps(newConditions).encode('utf8')
req = urllib.request.Request(conditionsSetURL, data=params,
headers={'content-type': 'application/json'})
response = urllib.request.urlopen(req)
演示:
识别的请求类型(即
post
)在哪里?@Startec:通过使用data
参数,请求
对象从GET切换到post。@Startec:您不能。有关解决方法,请参阅。@Startec:newConditions
是Python字典,而不是JSON字符串。@Startec:no,JSON.dumps()
生成一个JSON编码的字符串,其中整数仍然是(JSON)整数。任何兼容的JSON解码器都会再次为您提供整数。
>>> import json
>>> import urllib.request
>>> conditionsSetURL = 'http://httpbin.org/post'
>>> newConditions = {"con1":40, "con2":20, "con3":99, "con4":40, "password":"1234"}
>>> params = json.dumps(newConditions).encode('utf8')
>>> req = urllib.request.Request(conditionsSetURL, data=params,
... headers={'content-type': 'application/json'})
>>> response = urllib.request.urlopen(req)
>>> print(response.read().decode('utf8'))
{
"args": {},
"data": "{\"con4\": 40, \"con2\": 20, \"con1\": 40, \"password\": \"1234\", \"con3\": 99}",
"files": {},
"form": {},
"headers": {
"Accept-Encoding": "identity",
"Connection": "close",
"Content-Length": "68",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "Python-urllib/3.4",
"X-Request-Id": "411fbb7c-1aa0-457e-95f9-1af15b77c2d8"
},
"json": {
"con1": 40,
"con2": 20,
"con3": 99,
"con4": 40,
"password": "1234"
},
"origin": "84.92.98.170",
"url": "http://httpbin.org/post"
}