3

HTTPURLConnection クラスを使用して JSP への接続を開き、サーブレットから応答を受信しようとしています。応答ヘッダーは、サーブレットで読み取る必要がある JSP に設定されます。

コードサンプルは以下の通り

String strURL = "http://<host>:<port>/<context>/mypage.jsp";
String sCookies = getCookie();//method to get the authentication cookie(**SSOAUTH**) and its value for the current logged in user

URL url = new URL(strURL);
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
urlConnection.setRequestProperty("Cookie", URLEncoder.encode(sCookies, "UTF-8"));
urlConnection.setRequestMethod("POST");
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);

DataOutputStream out = new DataOutputStream(urlConnection.getOutputStream());
out.writeBytes("lang=en");
out.flush();
out.close();

 //reading the response received from JSP and retrieve header value
response.write(urlConnection.getHeaderField("commAuth") + "<br />");

問題は、渡されたSSOAUTH Cookie が JSP に送信されないことです。以下のように Cookie の代わりに UID/PWD を送信すると、認証が成功し、応答が正しく送信されます。

urlConnection.setRequestProperty("username", "testuser");
urlConnection.setRequestProperty("password", "testpwd");

これは、HTTPURLConnection を介して Cookie を送信する正しい方法ですか? または、設定する必要がある他のパラメーターはありますか?

4

1 に答える 1

2

sCookies 文字列全体から URLEncoder.encode を削除してみてください。Cookie の形式は NAME=VALUE の形式である必要がありますが、文字列全体を URL エンコードすることで、= をエスケープできます。

于 2012-08-22T03:45:44.163 に答える