2017-08-24 8 views
0

私はグーグルでは貧弱かもしれませんが、これまで私は乾燥してきました。 HTTPレスポンスのためのユニバーサルデコーダのようなものはありません。あなたはそれに本体とヘッダを与え、デコードされたデータを返します。例えばユニバーサルPython HTTPレスポンスデコーダ

response = requests.get("...") 
body = clever_package.decode(response.body, response.headers) 

これは、これは厳密には必要ではないものの、データを取得するための要求のパッケージを使用しています。 contentTypeとisBase64Encodedヘッダを取り、その魔法を働かせる汎用デコーダはありませんか?

おそらく私はそのようなパッケージに明白な欠陥を見ていないでしょう、なぜ私はどこにそれを見つけることができないのか説明します。

乾杯!

+0

ここで使用されているjson.loadsを見たことがありますか?https://stackoverflow.com/a/23073177/3042383? – lancew

答えて

0

デコードではどういう意味ですか?文字列データにちょうどバイト?その場合、ヘッダがエンコードを指定していない場合(ヘッダーがデコードを指定している場合は、ヘッダーで指定されたエンコーディングからデコードするだけです)、python-chardetが探しているものになります。

XML、JSONなどをさまざまな方法で解析したい場合は、データをユニコードにデコードした後に、おそらくそれぞれのライブラリ(組み込みのjsonモジュール、yamlモジュールなど)を使用します文字列。

+0

私はそれを意味のあるデータ型に読み込むことを意味します。たとえば、Pythonの辞書のようなjson型の例です。 イベント ''headers '' ['Content-Type'] == 'application/x-www-form-urlencoded': body = json.loads(urllib.parse。イベント['headers'] ['Content-Type']のelif 'application/json': body = json.loads(body) '' ' とこの厄介なif文を書くことなく、2つの異なる場所から辞書を取得する機能を再利用することができないことは、私には馬鹿馬鹿しいようです。 私は知らないかもしれませんが、おそらく私はばかげています。 – theooos

+0

既に 'requests'を使用している場合、' response'オブジェクトはJSON解析ができない場合に例外を発生させる '.json()'メソッドを持つべきです。 'application/x-www-form-urlencoded'を使ったもう一つの例は非常にアプリケーション特有です(JSONは' payload'フォーム要素にエンコードされていますが、これは一般的ではありません)。最高でJSONを試してみることができます。失敗した場合は、 'application/x-www-form-urlencoded'を確認し、' parse_qs() 'を実行して返します。 –

+0

どのように私が.jsonメソッドを見逃したのかわかりません...私はそれを使用します。私はすべての型を解析するメソッドのアイデアはかなり無駄であることがわかりますが、いくつか与えています。あなたはペイロードフォーマットについては正しいですが、PaperTrailの非常に奇妙なAPIです。 – theooos

関連する問題