0
import urllib2,urllib
params = {}
resp = urllib2.urlopen('http://somewhere/',urllib.urlencode(params))

urlopen() メソッドでは、メソッド 'get' または 'post' の argv がありません。このメソッドは、必要な URL によって「get」または「post」を把握できますか

4

2 に答える 2

1

ドキュメントから:

urllib2.urlopen(url[, data][, timeout])

dataサーバーに送信する追加データを指定する文字列、またはNoneそのようなデータが必要ない場合。data現在、HTTP リクエストは;を使用する唯一のものです。パラメータが指定されている場合、HTTP リクエストはPOSTではなく に なります。標準形式のバッファである必要があります。この 関数は、2 タプルのマッピングまたはシーケンスを受け取り、この形式の文字列を返します。urllib2 モジュール は、Connection:close ヘッダーが含まれたリクエストを送信します。GETdatadataapplication/x-www-form-urlencodedurllib.urlencode()HTTP/1.1

于 2013-02-17T08:55:25.613 に答える
1

指定されたパラメーターに基づいて計算しますGETPOSTあなたの場合POST、paramsの辞書が提供されているためです。

使用POSTするには、このようにすることができます(ドキュメントから)

import urllib
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
print f.read()

ここで辞書を関数に渡すことに注意してください。

使用するGETには、単に URL を渡すだけです (ここでは、URL lib に渡す代わりに、文字列補間を使用して URL にパラメーターを追加します)。

import urllib
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" % params)
print f.read()
于 2013-02-17T08:55:35.553 に答える