2012-02-21 1 views
2

У меня возникли проблемы с отправкой put с использованием модуля запросов. Я смог успешно выполнить и использовать Advanced Rest Client для Chrome. Я подтвердил, что моя полезная нагрузка верна. Однако, я получаю общую ошибку, говоря, что я посылаю плохой запрос. Я новичок на звонки веб-сервиса, и я не уверен, если то, что я делаю это совершенно неправильно, но это то, что я пытаюсь:Python Requests Module Put issue

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) 

Я знаю 100%, то XML, URL и учетные данные являются правильными, так почему же это не работает? Единственное, что я могу придумать, это то, что ключ для полезной нагрузки должен быть чем-то конкретным, но я не уверен, что это правильно или как выяснить, что это должно быть ...

Ответ является «HTTP Status 400 - Bad Request»

ответ

2

Порывшись еще в Quick Start Guide я нашел этот TID-бит информации:

Есть много раз, что вы хотите, чтобы отправить данные, которые не образуют кодированные. Если вы передадите строку вместо dict, эти данные будут опубликованы напрямую.

Я попробовал это первоначально, но, видимо, у меня была опечатка, потому что ошибка, которую я указала, мне нужно было передать в dict.

Независимо от этого, переход к прямому XML вместо словаря устраняет проблему.