How to send HTTP/1.0 request via urllib2?

后端 未结 2 1741
傲寒
傲寒 2020-12-06 19:13

Seems that urllib2 sends HTTP/1.1 request by default?

2条回答
  •  借酒劲吻你
    2020-12-06 19:33

    To avoid monkey-patching httplib (global change), you could subclass HTTPConnection and define your own http handler:

    #!/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])
    

提交回复
热议问题