リクエストモジュールを使用してWebサービスにリクエストを送信することに苦労しました。私はWindowsでPython 3.5.1〜32ビットを使用しています。Pythonがモジュールをリクエストし、ボディをエンコードする必要があります。なぜですか?
たとえば、 "á"のようなラテンのアクセント付き文字を要求すると、文字列変数をutf-8として明示的にエンコードする必要があります。なぜ私はこれを行う必要があるか誰かが説明できますか?ここで
は、私のコードの例である:これは動作しません
import requests
headers = { "content-type" : "text/xml;charset=UTF-8" }
url = '....'
body = 'á'
requests.post(url, data=body, headers=headers)
、サーバーは、文字のエスケープバージョンを受信しますが、私は、要求前にこれを追加した場合:
body = body.encode(encoding='utf-8')
それは、働く
これがなぜ必要なのか誰かが説明できますか?私のPython-Fuはこれを理解するのに良い時間を取ってくれました。
実際は必要ありません。私はいつもstr()を送信し、bytes()は送信しません。 – Maresh