-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 错误原因 请求方法 'POST' 不支持 PUT 会话测试 HTTP 错误状态 405 FAIL

4

1 回答 1

0

似乎 urllib2 只支持 GET 和 POST。我决定改用 Apache Requests lib。

opener.get_method = lambda: 'PUT' 是我在网上找到的一些代码。它实际上并没有更改用于发送请求的动词,即使您 get_method 它会回复您将其更改为的任何内容。

例如,在我的情况下,因为请求包含数据(上面的示例中实际上没有显示)它发送一个 POST。

于 2013-07-25T11:38:04.163 回答