我尝试使用以下代码发送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');
它完美无缺。如何解决?
答案 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)"}
)
)