2

requests モジュールを使用して put を送信する際に問題が発生しています。get を正常に実行でき、Chrome 用 Advanced Rest Client を使用して、ペイロードが正しいことを確認しました。ただし、不正なリクエストを送信したという一般的なエラーが表示されます。私はWebサービスの呼び出しに不慣れで、私がやっていることは完全に間違っているかどうかはわかりませんが、これは私が試みていることです:

import requests
payload = {'payload': '<request>some request xml</request>'}
headers = {'content-type': 'application/xml'}

r = requests.put('https://the.url', data=payload, auth=HTTPBasicAuth('user', 'password'), headers=headers)

XML、URL、および資格情報が 100% 正しいことはわかっているのに、なぜ上記の方法が機能しないのですか? 私が考えることができる唯一のことは、ペイロードのキーは特定のものである必要があるということですが、それが正しいかどうか、またはそれがどうあるべきかを理解する方法がわかりません...

応答は「HTTP Status 400 - Bad Request」です

4

1 に答える 1

2

クイックスタートガイドをさらに掘り下げた後、私はこのちょっとした情報を見つけました:

フォーム エンコードされていないデータを送信したい場合がよくあります。辞書の代わりに文字列を渡すと、そのデータは直接投稿されます。

私はこれを最初に試しましたが、取得したエラーが辞書を渡す必要があることを示していたため、明らかにタイプミスがありました。

とにかく、辞書の代わりに直接の XML を渡すことで問題は解決しました。

于 2012-02-22T17:08:39.727 に答える