python post请求与curl工具比较

时间:2015-01-28 07:08:52

标签: python curl

在我的项目中

我用过

curl -I url -H"Content-Type: application/octet-stream" -X POST

一切正常。

但在python中我使用了请求模块

response = requests.post(url, data="mystring", headers="Content-Type: application/octet-stream")

然后我得到400错误,这意味着:错误请求;请求以某种方式格式错误,无法处理。

可能是什么问题?

2 个答案:

答案 0 :(得分:0)

您确定curl和请求的网址和数据完全相同吗?

答案 1 :(得分:0)

尝试一些基本的故障排除。假设url和数据字符串是正确的。你确定你能够到达服务器吗? curl请求是一个终端命令,并且与python API类型命令的连接不同,python可能需要服务器打开的额外权限。如果您正在运行Apache,则需要确保它允许使用scirpted标头

读到这个:  http://httpd.apache.org/docs/2.2/mod/mod_headers.htmlhttp://httpd.apache.org/docs/2.2/mod/mod_headers.html

还尝试使用其他库(如此线程上的人员)进行连接的另一种方式:How do you send a HEAD HTTP request in Python 2?

“使用httplib

import httplib
conn = httplib.HTTPConnection("www.google.com")
conn.request("HEAD", "/index.html")
res = conn.getresponse()
print res.status, res.reason
200 OK
print res.getheaders()
[('content-length', '0'), ('expires', '-1'), ('server', 'gws'), ('cache-control', 'private, max-age=0'), ('date', 'Sat, 20 Sep 2008 06:43:36 GMT'), ('content-type', 'text/html; charset=ISO-8859-1')]