2016-05-03 6 views
2

は好ましくプロパティがhttp://docs.python-requests.org/en/master/api/#requests.ResponseのPython 3.xの

提供していないように見えるように要求するライブラリ

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

を使用してにアクセスする方法はあります生の応答文字列?

私はhttp://docs.python-requests.org/en/master/user/quickstart/#raw-response-content を見つけましたが、私は私が何をしたいことは、このだと思う任意のコンテンツ

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

答えて

6

を見ていませんよ。 rawバージョンを呼び出すと、HTTPバージョンが提供されます。これは、直接ドキュメントに記載されていません

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

(私は、サーバーはテスト目的のために初段を使用してHTTP 1.0を実行する例を発見した)、私はPyCharmのオートコンプリート機能を使用して、それを見つけました。しかし、私はそれを調べました。 HTTPバージョンが整数として返される理由は歴史的です。

python3のリクエストはurllib3を使用します。 Urllib3のクラスurllib3.response.HTTPResponseは、それはあなたがhttplibのためのマニュアルを確認する必要があり、あなたが検索した場合、あなたがで使用される

HTTPプロトコルのバージョンを見つけることができます後方互換性のあるかどうかを見る今urllib3 docs

httplibのHTTPResponseはとの下位互換性がありますサーバ。 HTTP/1.0では10、HTTP/1.1では11です。ここで

正確なリンクはHTTPResponse.version

+0

感謝です!それは私が欲しいものですが、なぜバージョンがintとして返されるのでしょうか?私はソースコードでそれを見つけようとしていますが、どこを見つけることはできません。 – user1267259

+1

私は説明を提供するために答えを編集しました。 – J91321

+0

HTTP/2.0が20を返すと仮定できますか?私はhttps://http2.golang.org/を試して、11を返します。ライブヘッダは、サーバがHTTP/2.0 OKを返していると言います。私は、私の例がリクエストを示していることに気づいた。残念。 – user1267259