7

post を使用したときに、post がすべての情報を HTTP ヘッダーで送信したと思いました (明らかに、この件について十分な情報がありません)。そのため、データをkey=value&key2=value2フォーマットに urlencode() する必要がある理由がわかりません。POST を使用する場合、そのフォーマットはどのように機能しますか?:

# Fail
data = {'name': 'John Smith'}
urllib2.urlopen(foo_url, data)

しかし

# Success
data = {'name': 'John Smith'}
data = urllib.urlencode(data)
urllib2.urlopen(foo_url, data)
4

2 に答える 2

9

これは「Content-Type」ヘッダーに関連しています。クライアントは、POST データがどのようにエンコードされているかを理解している必要があります。

これを行う標準的な方法は、application/x-www-form-urlencodedエンコード形式を使用することです。

ここで、「なぜエンコードする必要があるのか​​?」という質問がある場合、その答えは「HTTP コンテナー内のペイロードを線引きできるようにする必要があるため」です。

于 2010-02-03T15:27:30.083 に答える
2

データは、標準のapplication/x-www-form-urlencoded形式である必要があります。urlencodeargs を URL エンコードされた文字列に変換します。

于 2010-02-03T15:26:53.263 に答える