2017-02-06 8 views
0

私はhttpリクエストが新しく、いくつかの作業を自動化しようとしています。しかし、私は必要な結果を得ることができません。私は多くの投稿とPythonリクエストモジュールのドキュメントを見てきましたが、結果に変更はありません。PythonリクエストモジュールでPOSTにエラー400(不正リクエスト)が返される

コードIは私に正しい結果を与えますが、私はbody_を通過する間に、私はいくつかのミスをやっていると思います

 
{'X-Processing-Time-Milliseconds': '3', 'Transfer-Encoding': 'chunked', 'X-Powered-By': 'ASP.NET', 'Server': 'Kestrel', 'Date': 'Mon, 06 Feb 2017 14:51:59 GMT', 'Content-Type': 'application/json'} 
400 
{"Message":"''"} 

としてPythonを経て、私は出力を取得しています配達員と

def installFont(): 
    print "Installing font" 
    urlToHit = "some http address" 
    header_ = { "UserID": "00000", "PortalName": "EDC", "ModifyBy" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "Content-Type" : "application/json"} 

    body_ = { 
    "Email": "[email protected]", 
    "AssetLicenseType": "Trial", 
    "MachineIds": ["machine1", "machine2"], 
    "fontAsset": 
    [ 
    { 
      "FontId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", 
      "FontName": "Neue Aachen™ Pro Ultra Light", 
      "FontUrl": "http://helveticaurl", 
      "FontDownloadUrlAPI": "url", 
      "FontDownloadUrl" : "url1, 
      "FontFamilyName": "Neue Aachen™ Pro", 
      "FontFamilyUrl": "http://FontFamilyUrl", 
      "FontStyle": "Normal", 
      "FontWeight": "100", 
      "ExpiryDate": "2017-2-27 11:17:01", 
      "FontFamilyId": "34" 
    }     
    ] 
} 

r = requests.request("POST", urlToHit, data=body_, headers=header_) 
print r.headers 
print r.status_code 
print r.text 

Itried同じことを書きました

r = requests.request("POST", urlToHit, data=body_, headers=header_)

出力を介して郵便配達 {"Message":"Created Successfully","SuccessCount":2,"FailCount":0}

+0

私はそれをさらに調べて、問題は** fontAssest **フィールドであると仮定しています。このフィールドを "body_"から削除すると、応答は_ {"Message": ""少なくとも1つのフォントアセットが必要です ""} _。しかしbody_はPOSTMANツールで完全にうまく動作します。だから** fontAsset **は辞書のリストです。たぶん私はそのような要求をどのように投稿する必要があるかに焦点を当てる必要があります。 –

+0

この質問に時間を割かないでください。世話をする必要がある特殊文字** TM **があります。私は今、必要な結果を得ることができます。 –

答えて

0

あなたが使用する必要があります。

r = requests.post(urlToHit, json=body_, headers=headers_) 

documentationを通過してください。

+0

私はすでに 'r = requests.post(urlToHit、data = body_、headers = headers_)'をチェックしていました。 'requests.post(urlToHit、data = body_、headers = headers_)'はrequests.request( "POST"、urlToHit、data = body_、headers = header_)を呼び出します。 –

+0

また、body_をbody _ "" "'の文字列 '" "valueに変換することを確認しました。データの定義で** =:param data:(オプション):class: 'Request'の本体で送る辞書、バイト、またはファイルのようなオブジェクト。** –

+0

また、私はr =要求を試しました.post(urlToHit、json = body_、headers = headers_)はドキュメントを参照していますが、結果に変更はありません。 –

関連する問題