2

重大な問題があります。自分のアプリケーションを別のはるかに古いアプリケーションと統合したいと考えています。このサービスは単なる Web フォームであり、おそらくフレームワークの背後にあります (おそらくASP Classicだと思います)。アクション URL と、このサービスを複製するための HTML コードがあります。

これは古いサービス (HTML ページ) の一部です。

<FORM method="POST"
    url="https://host/path1/path2/AdapterHTTP?action_name=myactionWebAction&NEW_SESSION=true"
    enctype="multipart/form-data">

    <INPUT type="text" name="AAAWebView-FormAAA-field1" />
    <INPUT type="hidden" name="AAAWebView-FormAAA-field2" value="" />
    <INPUT type="submit" name="NAV__BUTTON__press__AAAWebView-FormAAA-enter" value="enter" />
</FORM>

私のアプリケーションは、Python を使用してコード ビハインドからこの古いアプリケーションのフォーム送信をシミュレートする必要があります。今のところ、あまり運がありませんでした。

とりあえずこれやってます

import requests
payload = {'AAAWebView-FormAAA-field1': field1Value, \
    'AAAWebView-FormAAA-field2': field2Value, \
    'NAV__BUTTON__press__AAAWebView-FormAAA-enter': "enter"
}
url="https://host/path1/path2/AdapterHTTP?action_name=myactionWebAction&NEW_SESSION=true"
headers = {'content-type': 'multipart/form-data'}
r = requests.post(url, data=payload, headers=headers)
print r.status_code

200 HTTP 応答コードを受け取りましたが、HTML ページの送信ボタンをクリックすると、アクションは値を保存しますが、私のコードは同じことをしません。この問題を解決するにはどうすればよいですか?


古いアプリケーションの所有者から、この Java 例外ログが送られてきました。何か案は?

org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
4

1 に答える 1

5

filesrequests.post のように空の辞書を渡してみてください。これにより、マルチパート境界を持つリクエストが適切に構築されると思います。

r = requests.post(url, data=payload, headers=headers, files={})
于 2012-04-20T08:49:39.083 に答える