プログラムでフォームにデータを送信しようとしています。サーバーが送信内容を「気に入らない」という小さな問題が発生しています。苛立たしいことに、エラーメッセージや、問題の診断に役立つものはありません。それは、を押したときに開始したのと同じページに戻るだけbr.submit()
です。
ブラウザで送信ボタンを手動でクリックすると、表示されるページに小さな「成功」が表示されます。メッセージ。スクリプトを介して送信する場合、そのようなメッセージは表示されません。さらに、変更は実際にはサーバーに投稿されていません。それは非常に奇妙で、私がこの振る舞いに初めて遭遇したときです。
Mechanizeのドキュメントを掘り下げると、これらの奇妙で診断が難しい問題の下で、ブラウザによって実際に送信されたリクエストヘッダーをコピーするのが最善であることがわかります。
私の質問は、呼び出したときにリクエストヘッダーが何であるかをどのように確認するかbr.submit()
です。
サンプルコード
location = 'http://ww.mysite.com'
br = mechanize.Browser()
cj = mechanize.LWPCookieJar()
br.set_cookiejar(cj)
username = MY_USER_NAME
password = MY_PASSWORD
br.addheaders.append(('Authorization', 'Basic %s' % base64.encodestring('%s:%s' % (username, password))))
br.open(location)
br.select_form(nr=0)
br['text'] = 'MY JUNK TO SUBMIT' #Text field. Can put anything
br['DropDown1'] = ['4'] #This is a dropdown of integer values
br['DropDown2'] = ['3'] #Also a dropdown of ints
br.submit()
フォームを送信するときに、どのヘッダーが送信されているかを確認するにはどうすればよいですか?