2014-10-28 39 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