GAE で実行され、特定のページに接続し、このページに自動的にログインし、ログイン後に html を受信して処理するアプリケーションを作成しました。
コードの問題のある部分 (writer.write 部分と connection.connect()) は次のとおりです。
this.username = URLEncoder.encode(username, "UTF-8");
this.password = URLEncoder.encode(password, "UTF-8");
this.login = "login";
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
OutputStreamWriter writer = new OutputStreamWriter(
connection.getOutputStream());
writer.write("str_login=" + login + "&str_user=" + username
+ "&str_pass=" + password);
writer.close();
connection.connect();
接続の確立中に IOException (connection.connect()) が発生します。問題は「application/x-www-form-urlencoded」データです。ページに間違ったパラメーターを渡すと (たとえば、str_passSSs、str_usernaAAme、またはパラメーターがまったくない)、ログインできませんが、ログイン ページの html で応答が返されます。したがって、Google App Engine はこの種の通信をサポートしていないようです。GAE がサポートする他の方法でこのページにログインすることはできますか?
Wireshark では、ユーザー名とパスワードが行ベースのテキスト データ (application/x-www-form-urlencoded) としてプレーンテキストで送信されることがわかりました。これが安全ではないことはわかっていますが、それが現状です。