10

デフォルトでは、(私にとっては)すべてurlopen()のパラメーターがPOSTリクエストを送信しているように見えます。代わりにGETを送信するように呼び出しを設定するにはどうすればよいですか?

import urllib
import urllib2

params = urllib.urlencode(dict({'hello': 'there'}))
urllib2.urlopen('http://httpbin.org/get', params)

urllib2.HTTPError:HTTPエラー405:メソッドは許可されていません

4

3 に答える 3

12

ポストリクエストとほぼ同じ方法で使用できます。

import urllib
import urllib2

params = urllib.urlencode({'hello':'there', 'foo': 'bar'})
urllib2.urlopen('http://somesite.com/get?' + params)

application/x-www-form-urlencoded2番目の引数は、たとえばコンテンツタイプを送信するときなど、POST要求を行うときにのみ指定する必要があります。

于 2012-10-11T00:28:41.883 に答える
4

data パラメーターが指定されている場合、HTTP 要求は GET ではなく POST になります。urllib2.urlopen('http://httpbin.org/get?hello=there')代わりに試してください。

于 2012-10-11T00:25:41.383 に答える
2

GET リクエストを作成している場合は、クエリ文字列を渡します。疑問符「?」を配置することでそれを行います。パラメータの前にあなたのURLの最後に。

import urllib
import urllib2

params = urllib.urlencode(dict({'hello': 'there'}))
req = urllib2.urlopen('http://httpbin.org/get/?' + params)
req.read()
于 2012-10-11T00:42:55.907 に答える