【发布时间】:2018-10-17 04:54:50
【问题描述】:
我正在尝试使用 python 编写 HTTP POST 请求。
在 bash 中使用 curl 进行尝试时,一切正常。使用 python,使用 requests 或 urllib3-library,我从 API 收到错误响应。 POST 请求包含标头中的信息和请求正文中的 json。
我注意到,当我使用 Wireshark 拦截数据包时,curl-request(正在工作)是一个长度为 374 字节的单个数据包。 python-request(requests 和 urllib3 在这里没有区别)被分成 253 和 144 字节长度的 2 个单独的数据包。
Wireshark 可以毫无问题地重新组装这些内容,并且它们似乎都包含标题和 POST 正文中的完整信息。但我尝试连接的 API 以一个不太有用的“处理请求时出错”来回答。
由于 253 字节不能是 TCP 数据包的限制,这种行为的原因是什么?有办法解决吗?
编辑:
重击:
curl 'http://localhost/test.php' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36' -H 'Content-Type: application/json' -d '{"key1":"value1","key2":"value2","key3":"value3"}'
蟒蛇:
import requests, json
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
"Content-Type": "application/json"}
data = {"key1":"value1", "key2":"value2", "key3":"value3"}
r=requests.post("http://localhost/test.php", headers=headers, data=json.dumps(data))
【问题讨论】:
-
您能否添加您正在使用的生成这些结果的示例代码?
-
对不起,我在下面添加了没有敏感信息的代码!
标签: python tcp python-requests