2016-04-01 22 views
-1

我试图让POST请求的响应状态检查-python

然后检查响应报头状态码

200或302

import urllib 
import urllib2 

url = 'url' #url 
values = {'name' : 'Michael Foord', 
      'location' : 'Northampton', 
      'language' : 'Python' } #post data 

data = urllib.urlencode(values) 
req = urllib2.Request(url, data) 
response = urllib2.urlopen(req) 

当我尝试

response.getcode()

th e结果是200即使结果是302-FOUND 有什么想法?

回答

1

documentation for urllib2.urlopen

该函数返回三个附加 方法类似文件的对象:)

  • 的getURL( - 返回检索到的资源的URL,常用来确定如果遵循重定向
  • info() - 以mimetools.Message实例的形式返回页面的元信息(如标题)(请参阅快速参考 HTTP标题s)
  • getcode() - 返回响应的HTTP状态码。

所以你可以使用

status = response.getcode() 

在重定向的情况下的状态,urlopen将自动跟随重定向。使用response.geturl()并查看它是否与您指定的URL匹配。

+0

当我检查插件的状态(状态为302找到),如果没有找到(状态是200-确定),但getcode(),结果总是200! – Vendetta

+1

'urlopen()'可以自动跟踪重定向,使用'response.geturl()'来查看它是否与你指定的URL不同。 –

+0

好吧,帮助我:) – Vendetta