Pergunta

Estou tendo problemas para enviar um put usando o módulo de solicitações.Consegui fazer um get com sucesso e usando um cliente de descanso avançado para Chrome, verifiquei que minha carga útil está correta.No entanto, recebo um erro genérico informando que envio uma solicitação incorreta.Eu sou novo em chamadas de serviço da web e não tenho certeza se o que estou fazendo está completamente errado, mas é o que estou tentando:

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)

Sei 100% que XML, URL e credenciais estão corretos, então por que o acima não funciona?A única coisa que consigo pensar é que a chave para a carga útil precisa ser algo específico, mas não tenho certeza se isso está correto ou como descobrir o que deveria ser ...

A resposta é 'HTTP Status 400 - Bad Request'

Foi útil?

Solução

Depois de se aprofundar mais no Início rápidoGuia Eu encontrei esta pequena informação:

Muitas vezes você deseja enviar dados que não estão codificados por formulário.Se você passar uma string em vez de um dict, esses dados serão postados diretamente.

Eu tentei fazer isso originalmente, mas aparentemente cometi um erro de digitação porque o erro que recebi indicou que eu precisava passar um ditado.

Mesmo assim, passar o XML direto em vez de um dicionário corrigiu o problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top