2012-06-28 14 views
9

Sto provando a creare un FormRequest che può inviare content-type: application/json.Form ScrapyRichiesta invio JSON

Ecco quello che cerco:

yield FormRequest("abc.someurl.com", formdata=json.dumps({"referenceId":123,"referenceType":456}), headers={'content-type':'application/json'}, callback=self.parseResult2) 

Se uso json.dumps() per elaborare i dati del modulo nelle = formdata, l'errore che ottengo è

"exceptions.ValueError: need more than 1 value to unpack"

Non posso utilizzare il elenca come in

formdata={"referenceId":123,"referenceType":456} 

FormRequest funziona ma non è accettato dal server.

import requests 
import json 
result = requests.post(url, json.dumps({"referenceId":123,"referenceType":456}), headers={'content-type':'application/json'}) 

Funziona dal prompt dei comandi di Python come sopra.

Qualche idea?

-km

+2

Qual è l'intero stacktrace (errore)? –

risposta

14

FormRequest è per la simulazione di un modulo HTML (ad esempio application/x-www-form-urlencoded). Sembra che tu voglia semplicemente inviare i dati con la tua richiesta. Dal momento che menzioni un tipo di contenuto di 'application/json' probabilmente vuoi fare qualcosa del genere:

request = Request(url, method='POST', 
        body=json.dumps(my_data), 
        headers={'Content-Type':'application/json'}) 
Problemi correlati