2012-06-28 79 views
9

我想創建一個FormRequest,可以發送內容類型:application/json。Scrapy FormRequest發送JSON

這裏是我的嘗試:

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

如果我使用json.dumps()處理在FORMDATA =表單數據,我得到的錯誤是

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

我不能隨便使用列表如

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

該FormRequest工程,但不被服務器接受。

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

它在python命令提示符下工作,如上所述。

任何想法?

-KM

+2

什麼是整個堆棧跟蹤(錯誤)? –

回答

14

FormRequest是用於模擬HTML形式(例如應用程序/ x-WWW窗體-urlencoded)。這聽起來像你只是想與你的請求發佈數據。既然你提到了'application/json'的內容類型,你可能想要這樣做:

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