python-3.x - 2.x 与 3.x 中的 Python request()
问题描述
使用 Python 2.X,以下脚本可以正常工作:
import requests
url = "https://rrcsearch3.neubus.com/esd3-rrc/api.php"
querystring = {"function":"SearchImages"}
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"json\"\r\n\r\n{\"Neusearch\":{\"profile\":\"15\",\"Searchitems\":{\"item\":[{\"key\":\"district\",\"value\":\"02\"}]},\"includeName\":\"\",\"excludeName\":\"\",\"excludeValue\":\"\",\"recordFromDate\":\"\",\"recordToDate\":\"\",\"page\":0,\"pageSize\":1000000,\"strict\":\"true\",\"saveSearch\":\"true\"}}\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'Accept': "application/json, text/javascript, */*; q=0.01",
'Accept-Encoding': "gzip, deflate, br",
'Accept-Language': "en-US,en;q=0.9",
'api_key': "publicuser",
'api_sig': "68461babf138014f252e64732ef3b1a0",
'Connection': "keep-alive",
'Cookie': "Neups=50; NeuESD=g383thb2ukc5q6klcd33m0t7c0; NeuAuth=d6b27ce8e6454176b9f50d9231e51045,Neups=50; NeuESD=g383thb2ukc5q6klcd33m0t7c0; NeuAuth=d6b27ce8e6454176b9f50d9231e51045; NeuESD=2oehhlibjmt3ur8m7fkvj0qmq6",
'Host': "rrcsearch3.neubus.com",
'Origin': "https://rrcsearch3.neubus.com",
'Referer': "https://rrcsearch3.neubus.com/esd3-rrc/index.php?_module_=esd&_action_=keysearch&profile=15",
'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
'X-Requested-With': "XMLHttpRequest",
'Content-Type': "application/x-www-form-urlencoded",
'Cache-Control': "no-cache",
'Postman-Token': "3a7a923e-1a49-4449-8950-db8e8df6ed5d,0f467bb5-860a-4113-88b7-1be0ce89d388",
'Content-Length': "400",
}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(response.text)
但是,在使用 Python 3.7 时,完全相同的脚本会产生以下输出:
{"status":"fail","message":"Missing or invalid parameter: 'json'"}
为什么会发生这种情况,我该如何解决?
解决方案
尝试json
根据文档 json
将有效负载作为参数将数据传递给正文:
response = requests.request("POST", url, json=payload, headers=headers, params=querystring)
推荐阅读
- python - 比较python中两个列表的元素
- java - 使用 HIBERNATE 将数据插入 MYSQL 后 IOConsole 更新程序断言错误
- flutter - 当第一个运行颤振时调用一个异步函数
- python - 将二维列表更改为字典。图表相关问题
- python - OperationalError at / no such table: blog_post
- mysql - 尝试从选择中插入时出现 SQL 语法错误
- javascript - 为什么我的在智能手机上单击时元素会改变大小?
- python - 如何使用 Pandas 中的两个标准清理或平滑时间序列
- java - 将我的应用程序发布到 google playstore 后,我的应用程序无法获取 firestore 数据以回收分页视图
- c# - 更新特定目录中的图像文件