我對使用Twisted比較陌生,在執行基本頭部請求時無法返回內容長度頭部。我已經建立了一個異步客戶端,但麻煩來了這一點代碼:製作扭曲的頭部請求
def getHeaders(url):
d = Agent(reactor).request("HEAD", url)
d.addCallbacks(handleResponse, handleError)
return d
def handleResponse(r):
print r.code, r.headers
whenFinished = twisted.internet.defer.Deffered()
r.deliverBody(PrinterClient(whenFinished))
return whenFinished
我正在做一個頭請求和傳遞的URL。如此documentation所示,內容長度標題未存儲在self.length中,但可以從self.headers響應中進行訪問。輸出正如預期的那樣返回狀態碼,但標題輸出不是預期的。使用「UHTTP://www.espn.go.com」,因爲它目前正在返回一個例子:
Set-Cookie: SWID=77638195-7A94-4DD0-92A5-348603068D58;
path=/; expires=Fri, 31-Jan-2034 00:50:09 GMT; domain=go.com;
X-Ua-Compatible: IE=edge,chrome=1
Cache-Control: max-age=15
Date: Fri, 31 Jan 2014 00:50:09 GMT
P3P: CP="CAO DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAi IVDi CONi
OUR SAMo OTRo BUS PHY ONL UNI PUR COM NAV INT DEM CNT STA PRE"
Content-Type: text/html; charset=iso-8859-1
正如你所看到的,沒有返回的內容長度字段。如果相同的請求在requests做,那麼結果將包含內容長度的頭:
r = requests.head("http://www.espn.go.com")
r.headers
({'content-length': '46133', 'content-encoding': 'gzip'...})
(rest omitted for readability)
是什麼原因造成這個問題?我相信這是我的一個簡單的錯誤,但我對我的生活無法弄清楚我做錯了什麼。任何幫助表示讚賞。
完美,這工作,謝謝。包含ContentDecoderAgent將返回整個標題。 treq也是一個有趣的軟件包。很好的答案。 – grromrell