2017-04-25 7 views
1

ネストされたディクショナリの形式でペイロードデータを変換して、Pythonリクエストモジュールを使用してPOSTリクエストのデータとして渡す際に問題があります。フォームデータは以下の通りです:POSTリクエスト用のJSONへのネストされたディクショナリPython

payload = {'request': { 
       'appkey': "936725A4-7D9A-11E5-81AC-86EC8D89CD5A"}, 
      'formdata':{ 
        'currency':'US', 
        'dataview':'store_default', 
        'distinct':'_distance, clientkey', 
        'geolocs':{ 
          'geoloc':[{ 
            '0':{ 
              'address1':'', 
              'addressline':'19128, PA', 
              'city':'Philadelphia', 
              'country':'US', 
              'latitude':'40.0532987', 
              'longitude':'-75.23040379999998', 
              'postalcode':'19128', 
              'province':'', 
              'state':'PA'}}] 
          }, 
        'google_autocomplete':'true', 
        'limit':'250', 
        'nobf':'1', 
        'searchradius':'15|25|50|100|250|350|450|550|650|750|850|950', 
        'true':'1', 
        'where':{'partner_reseller': {'eq':'1'}}}      
      } 

r = requests.post(url,data=simplejson.dumps(payload),headers=header) 
result = simplejson.loads(str(r.content)) 

誰かが構造で私を支援してくださいすることができ、私が書いたものの中に間違いを指摘することができます。次のエラーが表示され続けます。

{'code': 1008, 
'response': {'message': 'The submitted XML is not properly formed'}} 

私はあなたの助けをたくさんお願いします。ありがとうございました。

+0

(それは、このウェブAPIは、本当にあまりにもXMLを望んでいる、サービスのためのドキュメントはあなたを教えてしまうことも可能です)どのようなAPIこれはのためにあるのですか?ドキュメントはありますか?パブリックAPIの場合は、あなたが打つURLが助けになります – heinst

+0

メッセージに「XMLを提出しました」と表示されるので、おそらくXMLデータを要求しますか?あるいは、ヘッダーに 'Content-Type'を' application/json'に設定する必要があります。できるだけ、heinstとして、私たちにドキュメンテーションまたはAPIの名前を教えてください。 – rsz

+0

@rsz:ヘッダに既に 'content-type'を 'application/json'に設定しました。 –

答えて

3

JSONパラメータを使用して、オブジェクトをJSONにエンコードし、Content-Typeヘッダーをapplication/jsonに設定するようにリクエストすることをお勧めします。

Content-Typeをapplication/jsonに設定して、JSONを渡すように指定しない限り、WebサービスはXMLを渡していることを前提としている可能性があります。

requests.post(url,json=payload,headers=header)

+0

@RyanWicox:ありがとうございます。私がここで言及したのと同じ形式でペイロードを使用すべきか、構造を変更する必要がありますか? –

+0

ペイロードの構造は良く見えるので、jsonパラメータとして動作するはずです... – RyanWilcox

+0

次のエラーが表示されます。TypeError:request()に予期しないキーワード引数 'json'があります。 –

関連する問題