现在的位置: 首页 > 软件测试 > 测试工具 > 软件测试 > 正文

Python urllib2发送HEAD或GET请求报错”HTTP Error 405: Method Not Allowed” 解决方案

2015年07月10日 测试工具, 软件测试 ⁄ 共 988字 ⁄ 字号 评论关闭 ⁄ 阅读 2,646 次

最近使用urllib2时,因为urllib2.Request默认使用POST请求,而Http服务器只支持HEAD或GET等请求,此时请求就会返回错误"HTTP Error 405: Method Not Allowed"。

整理的解决方法如下:

1. 模拟Head请求

使用urllib2时,正常代码如下,若服务器只支持HEAD请求则会报错"HTTP Error 405: Method Not Allowed"。

import urllib2
request = urllib2.Request('http://localhost:80')

response = urllib2.urlopen(request)
print response.info()

这时需要按如下方式进行修改:

import urllib2
request = urllib2.Request('http://localhost:80')
request.get_method = lambda : 'HEAD'

response = urllib2.urlopen(request)
print response.info()

2. 模拟GET请求

使用urllib2时,正常代码如下,若服务器只支持GET请求则会报错"HTTP Error 405: Method Not Allowed"。

import urllib2
import urllib

url = 'http://ah.example.com'
half_url = u'/servlet/av/jd?ai=782&ji=2624743&sn=I'

req = urllib2.Request(url, half_url.encode('utf-8'))
response = urllib2.urlopen(req)
print response

这时需要按如下方式进行修改:

import urllib2
import urllib

url = 'http://ah.example.com'
half_url = u'/servlet/av/jd?ai=782&ji=2624743&sn=I'

req = urllib2.Request(url+half_url.encode('utf-8'))
response = urllib2.urlopen(req)
print response

抱歉!评论已关闭.