2017-08-31 19 views
1

これは私がPythonで必要とする投稿要求の目標です。POST要求ファイルpython-requests

XMLファイル、url、認証トークンがあります。 xmlファイルに応じて、サーバーからxml応答が返されます。

req = requests.post(url='http://abc123.com/index.php/plan/', \  
      headers={'auth-token': 'abCdeFgh'}, \ 
      data={'data': open('sample_plan.xml', 'rb')}) 

POSTリクエストのステータスコードは200ですが、 "<error>invalid XML for request</error>" のようなXML応答でエラーが発生しました。おそらくxmlファイルは私の投稿要求で間違ったパラメータで埋められていると思われます。 しかし、別のツール - 郵便番号 - https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en?正しいxml応答で動作し、成功します。私は郵便配達を持っている:ヘッダで

  • キー:認証トークン:ABCDEFGH

    ボディで
  • :選択した フォーム-dataオプション.. キー:データ:sample_plan.xmlファイルが選択されました..

ポストリクエストのパラメータのための

ゴール(すべてのパラメータが必須です):ヘッダー内の 1 - 認証トークン体で 2 - 名前/コンテンツID =データとXMLファイル

、どのパラメータが私がすべき投稿リクエストのファイルを?私はほとんどすべてを試しました - Pythonリクエストドキュメントに基づいて...

ありがとうございました!

答えて

1

何とか試してみた後、私はそれを手に入れました!

正しいパラメータはファイルであり、3つの引数を持つタプルの値を持つ 'data'キーがなければなりませんでした。それ以外の場合は、ファイルに私が使用した要求のドキュメントから

...正しくマルチエンコードのアップロードのパラメータが機能しなかったhttp://docs.python-requests.org/en/master/api/ とキー私は3組の+ 値(によって付勢された「データ」そのスイートが終了した後、ファイルが適切に閉じられているので、そこで私の問題の答えは(もキーワード「と」を使用している「ファイル名」、fileobjを、「CONTENT_TYPE」)

with open('sample_plan.xml', 'rb') as payload: 
    headers = {'auth-token': 'abCdeFgh'} 
    files = {'data': ('sample_plan.xml', payload, 'text/xml')} 
    req = requests.post(url='http://abc123.com/index.php/plan/', \ 
      headers=headers, files=files) 
関連する問題