Sto cercando di convertire seguente richiesta ricciolo in pycurl:Curl Inserisci richiesta in codice pycurl
curl -v
-H Accept:application/json \
-H Content-Type:application/json \
-d "{
name: 'abc',
path: 'def',
target: [ 'ghi' ]
}" \
-X POST http://some-url
Ho seguente codice python:
import pycurl, json
c = pycurl.Curl()
c.setopt(pycurl.URL, 'http://some-url')
c.setopt(pycurl.HTTPHEADER, ['Accept: application/json'])
data = json.dumps({"name": "abc", "path": "def", "target": "ghi"})
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, data)
c.setopt(pycurl.VERBOSE, 1)
c.perform()
print curl_agent.getinfo(pycurl.RESPONSE_CODE)
c.close()
L'esecuzione di questo ho avuto un errore 415: Non supportato tipo di supporto, quindi ho cambiato:
c.setopt(pycurl.HTTPHEADER, ['Accept: application/json'])
in:
c.setopt(pycurl.HTTPHEADER, [ 'Content-Type: application/json' , 'Accept: application/json'])
Questa volta ho 400: Richiesta non valida. Ma il codice bash con arricciatura funziona. Hai idea di cosa dovrei risolvere nel codice Python?
La libreria delle richieste è interrotta in molti modi da essere inutile per qualsiasi server che sia rigoroso o leggermente non conforme. Ci sono richieste che funzionano perfettamente con il ricciolo, ma che vengono rifiutate quando vengono fatte con la libreria delle richieste a causa della sua inutile disinfezione. – Nimrod
@Nimrod grazie per il tuo commento. Non ero a conoscenza di ciò e non ho mai avuto problemi con le richieste, ma sarei interessato a saperne di più sui problemi che descrivi. Puoi indicarmi ulteriori informazioni? –