POST请求未通过

时间:2014-07-24 17:51:39

标签: python urllib2

我尝试使用以下代码发送POST查询:

def open(self, url, params): 
    self.__opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
    c = self.__opener.open(
        urllib2.Request(
            url,
            urllib.urlencode(params),
            {"User-agent": "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"}
        )
    )

Class.open('http://example.com', {'username': 'test'});

但服务器告诉我,用户名字段为空。

urllib.Request('http://example.com?username=test');

它完美无缺。如何解决?

1 个答案:

答案 0 :(得分:2)

您正在请求正文中发送数据;这在POST请求中是完全正常的。但是,http://example.com?username=test不是POST请求;这是一个GET而不是。

您可以对urlencode()执行相同操作;只需使用?

将其添加到网址即可
c = self.__opener.open(
    urllib2.Request(
        url + '?' + urllib.urlencode(params),
        {"User-agent": "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"}
    )
)