-2

メソッドを PUT に変更できないのはなぜですか。コードをあまり変更せずに PUT に変更できますか?

これが私のコードです:

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)   

#code to change method to PUT
opener.get_method = lambda: 'PUT'

print "now using method:", meth  # prints now using PUT

try:
    r = opener.open("http://the_url")
except urllib2.HTTPError as e:
    if hasattr(e, 'code'):
        report += "HTTP error status " + str(e.code) + " FAIL\n"
        if hasattr(e, 'reason'):
            print "HTTP Error reason " + e.reason
    else:
        report += "HTTP error occurred FAIL\n"

しかし、ランタイム エラー HTTP エラーの理由 Request method 'POST' not supported PUT session test HTTP error status 405 FAIL が発生します

4

1 に答える 1

0

urllib2 は GET と POST のみをサポートしているようです。代わりに Apache Requests lib を使用することにしました。

opener.get_method = lambda: 'PUT' は、Web で見つけたコードです。get_method を使用すると、変更した内容で応答しますが、実際にはリクエストの送信に使用される動詞は変更されません。

たとえば、私の場合、リクエストにはデータが含まれていたため(実際には上記の例には示されていません)、POST が送信されます。

于 2013-07-25T11:38:04.163 に答える