python – Scrapy FormRequest发送JSON

codeday· 2019-10-08
本文来自 codeday ,作者 codeday
我正在尝试创建一个可以发送content-type:application / json的FormRequest.

这是我尝试的:

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

最佳答案
FormRequest用于模拟HTML表单(例如application / x-www-form-urlencoded).听起来你只是想用你的请求发布数据.既然你提到了’application / json’的内容类型,你可能想要做这样的事情:

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