默认情况下,对我来说似乎每个带参数的 urlopen()
都发送 POST 请求。如何设置调用以发送 GET 请求?
import urllib
import urllib2
params = urllib.urlencode(dict({'hello': 'there'}))
urllib2.urlopen('http://httpbin.org/get', params)
urllib2.HTTPError: HTTP Error 405: METHOD NOT ALLOWED
你可以使用与post请求类似的方式:
import urllib
import urllib2
params = urllib.urlencode({'hello':'there', 'foo': 'bar'})
urllib2.urlopen('http://somesite.com/get?' + params)
仅在进行POST请求时才应提供第二个参数,例如在发送application/x-www-form-urlencoded
的内容类型时。
urlencode
不会添加 ?
。此外,dict({...})
是多余的,因为 {...}
语法已经创建了一个 dict
。 - Dietrich Epp?
,但现在可以正常工作了。谢谢。 - user1447941urllib2.urlopen('http://httpbin.org/get?hello=there')
。import urllib
import urllib2
params = urllib.urlencode(dict({'hello': 'there'}))
req = urllib2.urlopen('http://httpbin.org/get/?' + params)
req.read()
dict({...})
是多余的,因为{...}
语法已经创建了一个字典,所以你可以直接使用urlencode({'hello': 'there'})
。 - Dietrich Epp