似乎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