我需要在基本身份验证后加载网页,但我的代码中的sessionid没有连接到url(我得到10-08 10:17:27.424 20143-20143 / com.example.marco.bella D / WebView:使用loadURL = https://unimol.esse3.cineca.it/auth/Logon.do;jsessionid= )... ...我不知道为什么......我告诉你我的代码!
变量cookie
获得正确的sessionID
。
提前致谢!
URL url = null;
try {
url = new URL("https://unimol.esse3.cineca.it/auth/Logon.do");
} catch (MalformedURLException e) {
}
HttpURLConnection httpRequest = null;
try {
httpRequest = (HttpURLConnection) url.openConnection();
} catch (IOException e) {
}
try {
httpRequest.setRequestMethod("GET");
} catch (ProtocolException e) {
}
String cookie = "";
httpRequest.setDoInput(true);
String authString = "user" + ":" + "pass";
byte[] authEncBytes = android.util.Base64.encode(authString.getBytes(), android.util.Base64.DEFAULT);
String authStringEnc = new String(authEncBytes);
httpRequest.addRequestProperty("Authorization", "Basic " + authStringEnc);
System.out.println("auth:" + "" + authStringEnc);
DefaultHttpClient httpclient = new DefaultHttpClient();
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
if (cookies.isEmpty()) {
System.out.println("None");
} else {
for (int i = 0; i < cookies.size(); i++) {
System.out.println("- " + cookies.get(i).toString());
cookie=cookies.get(i).toString();
}
}
webView.loadUrl("https://unimol.esse3.cineca.it/auth/Logon.do;jsessionid="+cookie);
答案 0 :(得分:0)
(我得到10-08 10:17:27.424 20143-20143 / com.example.marco.bella d /的WebView: loadUrl = https://unimol.esse3.cineca.it/auth/Logon.do;jsessionid=)... i 不知道为什么
我只能通过查看您在此处发布的部分来解决的问题是,您在for循环中覆盖了cookie
变量,并且在cookies
的任何迭代中都存在很高的可能性,一个或者存在多于1个cookie,其值为空。
for (int i = 0; i < cookies.size(); i++) {
System.out.println("- " + cookies.get(i).toString());
cookie=cookies.get(i).toString(); // This line is the culprit
}
您应该检查cookie的值是空还是空。
用下面的线替换罪魁祸首
我正在使用Guava库的Strings类(isNullOrEmpty
)的实用程序来检查值是null还是空,您可以使用自己的实现,
if(Strings.isNullOrEmpty(cookies.get(i).toString())) {
continue;
} else {
cookie=cookies.get(i).toString();
}
现在,如果在迭代期间你得到你确认你进入控制台语句的id,那么它肯定会被加载。