Domanda

Ho problemi a inviare un put utilizzando il modulo delle richieste.Sono stato in grado di eseguire un get con successo e utilizzando un Advanced Rest Client per Chrome ho verificato che il mio payload sia corretto.Tuttavia, ricevo un errore generico che dice che invio una cattiva richiesta.Sono nuovo nel campo delle chiamate ai servizi web e non sono sicuro che quello che sto facendo sia completamente sbagliato, ma questo è quello che sto 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)

So al 100% che XML, URL e credenziali sono corretti, quindi perché quanto sopra non funziona?L'unica cosa a cui riesco a pensare è che la chiave per il payload deve essere qualcosa di specifico, ma non sono sicuro se sia corretto o come capire cosa dovrebbe essere ...

La risposta è "HTTP Status 400 - Bad Request"

È stato utile?

Soluzione

Dopo aver approfondito il Quick StartGuida Ho trovato questa piccola informazione:

Ci sono molte volte in cui desideri inviare dati che non sono codificati in forma.Se passi una stringa invece di un dict, quei dati verranno pubblicati direttamente.

L'ho provato originariamente ma a quanto pare ho avuto un errore di battitura perché l'errore che mi è stato indicato che dovevo passare in un dict.

Indipendentemente da ciò, il problema è stato risolto passando l'XML diretto anziché un dizionario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top