为什么我不能将方法更改为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
答案 0 :(得分:0)
似乎urllib2只支持GET和POST。我决定使用Apache Requests lib。
opener.get_method = lambda:'PUT'是我在网上找到的一些代码。它实际上并没有改变用于发送请求的动词,即使你get_method它会回复你改变它的任何内容。
例如,在我的情况下,因为请求包含数据(实际上未在上面的示例中显示),它发送POST。