我向某个网址发送POST
请求,然后此网址会根据200 OK
请求中提供的参数抛出401 Unauthorized
或POST
代码
除了返回代码之外,网站还会返回一个文本,这对错误特别有用,因此执行请求的人知道失败的原因。为此,我使用此代码:
#/usr/bin/env python
import urllib
import urllib2
url = 'https://site/request'
params = {
'param1': 'value1',
'param2': 'value2',
...
}
data = urllib.urlencode(params)
req = urllib2.Request(url, data)
try:
response = urllib2.urlopen(req)
the_page = response.read()
except urllib2.URLError as e:
print e.code, e.reason # Returns only 401 Unauthorized, not the text
请求成功后,我会收到200
代码,我可以使用the_page
变量获取消息。在这种情况下相当无用。
但是当它失败时,抛出URLError
的行就是那个调用urlopen()
的行,所以我无法抓取网络错误消息。
即使在URLError
事件中,有没有办法获取消息?如果没有,是否有另一种方法可以执行POST
请求并在出错时抓取Web内容?
在我的案例中,Python版本为2.7.6
。
由于
答案 0 :(得分:2)
我建议使用请求库(使用var array = ["My variable","Something else"];
var lookup = "My variable";
var index = array.indexOf(lookup);
alert(index);
安装)
pip install requests
答案 1 :(得分:1)
如果你遇到一个HTTPError-它是URLError的一个更具体的子类,我认为它会在401的情况下被引发 - 它可以被读作类文件对象,产生页面内容: