在基本的auth android之后发布加载网页

时间:2017-10-08 08:24:57

标签: java android basic-authentication

我需要在基本身份验证后加载网页,但我的代码中的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);

1 个答案:

答案 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,那么它肯定会被加载。