使用Python Mechanize进行HTTP POST时出现400错误请求
我在用Firefox进行HTTP POST请求时,检查了头部信息,使用的是Live HTTP headers。然后我尝试用mechanize来做这个请求,但却遇到了400错误,提示请求有问题。以下是我的代码:
MechBrowser = mechanize.Browser()
LoginUrl = "http://example.com"
LoginHeader = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 (.NET CLR 3.5.30729)", "referer": "http://example.com"}
LoginData = "example=&hello=hi"
LoginReq = urllib2.Request(LoginUrl, LoginData, LoginHeader)
LoginResposne = MechBrowser.open(LoginReq)
我从LiveHTTPHeaders复制了变量,但还是收到了400错误。是不是有什么东西漏掉了?
3 个回答
0
根据我在网页服务器编程方面的一些经验,我可以告诉你,你只需要这样写:“http://example.com?example=&hello=hi”。(就是把你的网址和数据用一个“&”符号连接起来。)
0
400
是一个比较模糊的响应代码。造成这个问题的原因可能是 Host
或 Content-Length
这些头信息不正确或者缺失。
0
其实,这个请求需要一些隐藏的信息,而这些信息没有被LiveHTTPHeaders捕捉到。所以我转而使用Fiddler来获取更详细的报告和分析,问题就解决了。