ブラウザの裏の動き

レスポンスで受け取ったhtmlからinputタグのvalueを取り出して
次のリクエストを送信するみたいな
ブラウザっぽいことをJavaでごりごり書いておりました。
んなもん、1日本気出せばできるやー、なんて思っていたのですが
3日かかってもできませんでした。何とかできるにはできたのですが、
はまってた箇所のメモ。


hiddenに設定されていたvalueで、


value="tmp=true&tmpcache=false"


のように、URLエンコードされた値を
リクエストパラメータに設定する時。
そのままURLエンコードして送ると、


tmp%3Dtrue%26amp%3Btmpcache%3Dfalse

となります。


ただし、この値をブラウザからリクエストを送った場合、


tmp%3Dtrue%26tmpcache%3Dfalse

となっていました。


ということは、


tmp=true&tmpcache=false

としてリクエストを送らなければなりません。


ブラウザと同じように


&→&

変換をした後に、URLエンコードしてリクエストパラメータに設定する
必要があったのです。


JavaScriptではそのような処理をしておらず、
パケットキャプチャしてやり取りを見た所
そのような動作をしているようでしたのでブラウザが空気を読んで
変換していたと結論付けましたが、こいつに気づくまで
様々な寄り道をしました(できたから良しとしましょう)。
ま、この辺りの寄り道が自分の知識になるのですが。