使用urllib2无法将HTTP方法更改为PUT

时间:2013-07-24 16:56:19

标签: python http urllib2

为什么我不能将方法更改为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

1 个答案:

答案 0 :(得分:0)

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

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

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