2012-06-28 13 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) 

私はFORMDATA =でフォームデータを処理するためにjson.dumps()を使用している場合は、私が手にエラーが

"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(例えばアプリケーション/ x-www-form-urlencodedで)HTMLフォームをシミュレートするためのものです。あなたのリクエストでデータをPOSTしたいと思っているようです。あなたが 'application/json'というコンテンツタイプについて言及しているので、おそらくこのようなことをしたいと思うでしょう:

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