2016-05-03 5 views
2

Vorzugsweise werden die Anfragen BibliothekPython 3.x wie http Version (Anfragen Bibliothek)

HTTP/1.1 200 OK  <-- I want this... 
Content-Type: text/html; charset=utf-8 

Diese Eigenschaft nicht http://docs.python-requests.org/en/master/api/#requests.Response

Gibt es eine Möglichkeit zur Verfügung gestellt zu sein scheint die für den Zugriff auf rohe Antwortzeichenfolge?

fand ich http://docs.python-requests.org/en/master/user/quickstart/#raw-response-content aber ich sehe keine Inhalte

r = requests.head(uri, stream=True) 
print(r.raw.read(10)) # -> b'' 

Antwort

6

Ich denke, was Sie wollen, ist dies. Aufruf der Version auf Raw gibt Ihnen HTTP-Version. (Ich fand das Beispiel Server läuft HTTP 1.0 unter Verwendung von Shodan zu Testzwecken)

>>> import requests 
>>> response = requests.get("http://104.71.136.252/", timeout=60, verify=False) 
>>> response.raw.version 
10 
>>> response = requests.get("http://stackoverflow.com", timeout=60, verify=False) 
>>> response.raw.version 
11 

Dies ist nicht direkt in der Dokumentation erwähnt, fand ich es von PyCharm Autovervollständigen-Funktion. Aber ich habe es untersucht. Der Grund, warum die HTTP-Version als Ganzzahl zurückgegeben wird, ist historisch.

Anforderungen für python3 verwendet urllib3. Urllib3 Klasse urllib3.response.HTTPResponse ist rückwärtskompatibel mit httplib der Httpresponse sehen urllib3 docs

Nun, wenn es rückwärts kompatibel ist Sie Dokumentation zu überprüfen, für httplib und wenn Sie Sie finden, suchen

Version HTTP-Protokoll verwendet, durch Server. 10 für HTTP/1.0, 11 für HTTP/1.1.

Hier ist die genaue Link HTTPResponse.version

+0

Dank! Es scheint genau das zu sein, was ich will, aber warum wird die Version als int zurückgegeben? Ich versuche es im Quellcode zu finden, kann aber nicht herausfinden, wo. – user1267259

+1

Ich habe die Antwort bearbeitet, um eine Erklärung zu geben. – J91321

+0

Kann ich davon ausgehen, dass HTTP/2.0 20 zurückgibt? Ich habe versucht https://http2.golang.org/ und es gibt 11. Live-Header sagt, dass der Server HTTP/2.0 OK zurückgibt. Ich habe gerade gemerkt, dass mein Beispiel eine Anfrage zeigt ... Entschuldigung. – user1267259