我在为weblogic上部署的应用程序检索https上的cookie时遇到问题。我正在使用下面的代码。
HttpURLConnection huc3= (HttpURLConnection) new URL(url1).openConnection();
huc3.setRequestMethod("POST");
BufferedReader in = new BufferedReader(
new InputStreamReader(huc1.getInputStream()));
huc3.setDoOutput(true);
DataOutputStream wr3 = new DataOutputStream(huc3.getOutputStream());
wr3.writeBytes("Username=abc&password=xyz");
wr3.flush();
wr3.close();
String thirdCookie = huc3.getHeaderField("Set-Cookie");
问题在于,我能够检索“JSESSIONID”,但我无法检索“_WL_AUTHCOOKIE_JSESSIONID”。哪个是安全cookie,需要进行后续的身份验证调用。
我在weblogic上部署的应用程序没有启用https,因此只在身份验证时生成JSESSIONID,并且工作正常。
但是在HTTPS上会生成另一个我无法解决的cookie。
如果我使用cookie管理器并在独立应用程序中执行
CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cookieManager);
它工作正常。但我有以下问题:
1.我想知道如何使用CookieManger提取“_WL_AUTHCOOKIE_JSESSIONID”?
2:是的,如果我将此代码放在Web应用程序中并在weblogic上部署,它就会停止工作。为什么呢?
答案 0 :(得分:0)
找到第二个问题的解决方案。基本上我们必须在“startWebLogic.cmd”中设置一个java选项来告诉weblogic不要使用Weblogic的httphandler,使用处理程序来自sun。 Weblogic的httphandler似乎没有使用CookieManager和CookieHandler。
我在下面设置选项。
设置JAVA_OPTIONS =%JAVA_OPTIONS %% JAVA_PROPERTIES%-DUseSunHttpHandler = true - Dwlw.iterativeDev =%iterativeDevFlag%-Dwlw.testConsole =%testConsoleFlag%-Dwlw.logErrorsToConsole =%logErrorsToConsoleFlag%
仍在寻找问题1的答案。