2014-10-28 75 views
1
req = urllib2.Request 
var1 = req.get_header('var1', default=None) 
logging.info(var1) 
var2 = req.get_header('var2', default=None) 
logging.info(var2) 
var3= req.get_header('var3', default=None) 
logging.info(var3) 
var4 = req.get_header('var4', default=None) 
logging.info(var4) 

编写了上面的python脚本来提取http头文件,但在Google App Engine上运行时遇到以下错误。Python--提取http头文件

<type 'exceptions.TypeError'>: unbound method get_header() must be called with Request instance as first argument (got str instance instead) 
Traceback (most recent call last): 
    File "/base/data/home/apps/s~##############/##########/@@@@@@@@@.py", line 10, in <module> 
    var1= req.get_header('var1', default=None) 

对于App Engine的Python开发新手,无法找出错误。

+0

查看关于'getheader'的[此前面的问题](http://stackoverflow.com/questions/11831845/how-to-call-urllib2-get-header-method)。 – Tony 2014-10-28 07:26:16

+0

那么,至少你需要像这样'req = urllib2.Request(url)' – aseeon 2014-10-28 07:27:03

+0

请求一个请求的实例如果提取标头的脚本是在一个网页内(python编码)。使用高级休息客户端(基于Java)我使用GET将标题发送到python网页。在应用引擎中获取以下错误:: :应用程序无法获取与用于请求的URL相同的URL。 – akgaur 2014-10-28 10:35:45

回答

1

你可以得到这样的,

>>> req = urllib2.Request("http://www.google.com") 
>>> response = urllib2.urlopen(req) 
>>> response.info().getheader('Content-Type') 
'text/html; charset=ISO-8859-9' 
>>> 
+0

中表示如果解压缩标头的脚本位于网页内部(python编码)。使用高级休息客户端(基于Java)我使用GET将标题发送到python网页。在应用引擎中获取以下错误:: :应用程序无法获取与用于请求的URL相同的URL。 – akgaur 2014-10-28 10:36:17

3

你似乎在做一些非常奇怪:你是从你的处理程序作出Web请求的URL提供相同的处理程序,然后试图让您实际制作的请求的标题。你为什么要这样做?这根本没有意义。

认为你真正想要做的是摆脱这已经被传递到处理程序,它当然通过self.request可请求对象的标题。

+1

更具体地说,“self.request.headers”(字典)。但是,丹尼尔在这里建议的是要走的路。 – 2014-10-28 12:31:35