似乎urllib2默認發送HTTP/1.1請求?如何通過urllib2發送HTTP/1.0請求?
6
A
回答
4
urllib2在引擎蓋下使用httplib進行連接。您可以將其更改爲http 1.0,如下所示。我包括我的Apache服務器的訪問日誌,顯示HTTP連接怎麼也改爲1.0
代碼
import urllib2, httplib
httplib.HTTPConnection._http_vsn = 10
httplib.HTTPConnection._http_vsn_str = 'HTTP/1.0'
print urllib2.urlopen('http://localhost/').read()
的access.log
127.0.0.1 - - [01/Dec/2012:09:10:27 +0300] "GET/HTTP/1.1" 200 454 "-" "Python-urllib/2.7"
127.0.0.1 - - [01/Dec/2012:09:16:32 +0300] "GET/HTTP/1.0" 200 454 "-" "Python-urllib/2.7"
+0
我終於想通過定義我自己的處理程序,但你的解決方案更簡單,謝謝:) – houqp
+0
爲Python 3用戶,httplib被替換爲http.client,其餘的是仍然和Marwan的精彩解決方案一樣。 –
4
爲了避免猴子補丁httplib
(全局變更),您可以繼承HTTPConnection
並定義您自己的http處理程序:
#!/usr/bin/env python
try:
from httplib import HTTPConnection
from urllib2 import HTTPHandler, build_opener
except ImportError: # Python 3
from http.client import HTTPConnection
from urllib.request import HTTPHandler, build_opener
class HTTP10Connection(HTTPConnection):
_http_vsn = 10
_http_vsn_str = "HTTP/1.0"
class HTTP10Handler(HTTPHandler):
def http_open(self, req):
return self.do_open(HTTP10Connection, req)
opener = build_opener(HTTP10Handler)
print(opener.open('http://stackoverflow.com/q/13656757').read()[:100])
相關問題
- 1. 如何通過Django發送GET請求
- 2. 如何通過TCPSocket發送HTTP請求?
- 3. 如何通過telnet發送POST請求
- 4. 如何通過POSTMAN發送SOAP請求
- 5. urllib2無法發送GET請求
- 6. 如何發送通過URL連續請求:Python的請求
- 7. 如何通過POST請求向網站發送請求?
- 8. 通過請求頭髮送數據與通過請求主體發送數據
- 9. 通過ASP.net發送HTTP發佈請求
- 10. 如何通過HTTParty通過PUT請求發送空數組?
- 11. 如何在urllib2請求中發送utf-8內容?
- 12. 如何發送帶有空格的urllib2請求
- 13. 如何通過參數,將其發送POST請求更新網頁,並通過發送GET請求,它
- 14. urllib2的請求發出
- 15. 如何從請求到Urllib2
- 16. 發送HTTP請求通過python腳本
- 17. 通過WCF發送異常(System.Reflection.TargetInvocationException)請求
- 18. 通過ASP.NET C發送HTTP請求#
- 19. 通過API發送帖子請求
- 20. 通過https代理髮送curl請求
- 21. 從請求通過json發送參數
- 22. 通過setVariables發送中繼請求
- 23. 通過AJAX發送JSON POST請求
- 24. cURL通過PHP代理髮送請求
- 25. 通過發送ussd請求啓動SMS
- 26. 通過AJAX發送http請求
- 27. alamofire通過肥皂發送請求
- 28. .NET 4.5 - 通過HttpPost發送SOAP請求
- 29. 通過GET請求發送JSON列表
- 30. 通過郵件發送日曆請求
是否有什麼特別的理由在HTTP 1.1上使用HTTP 1.0? –
我也很好奇爲什麼需要HTTP 1.0 –
我正在爲我的一個愚蠢的作業寫一個測試腳本,它只使用HTTP 1.0。 (測試腳本不是作業的一部分) – houqp