NullPointer Exception with Cookie на Android 2.2 - отлично работает на 2.3 и выше - PullRequest
1 голос
/ 03 февраля 2012

- это решено, см. Нижнюю часть поста -

Я пытаюсь получить cookie от установленного соединения.Следующий код работает хорошо, но он выдает исключение NullPointer на Android 2.2 и ниже:

URL url = new URL("https://myloginform");
            trustAllHosts(); //because the certificate is not singed
            HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
            conn.setHostnameVerifier(DO_NOT_VERIFY);
            conn.setInstanceFollowRedirects(false);
            conn.setDoOutput(true);

            //Connect to login-page and send login data
            OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(data);
            wr.flush();
            wr.close();     

            //get cookies THIS WORKS ONLY ON ANDROID 2.3 AND ABOVE
            List<String> cookies = conn.getHeaderFields().get("Set-Cookie");
            conn.disconnect();

            //connect to overview page
            url = new URL("https://mynextpage");
            trustAllHosts();
            conn = (HttpsURLConnection) url.openConnection();
            conn.setHostnameVerifier(DO_NOT_VERIFY);
            conn.setInstanceFollowRedirects(false);




            //Send cookies for identification - THIS WILL THROW A NULLPOINTER EXCEPTION
            for (String cookie : cookies) {
                conn.addRequestProperty("Cookie", cookie.split(";", 2)[0]);
            }





            // Get the response
            BufferedReader rd = new BufferedReader(new InputStreamReader(
                    conn.getInputStream()));

            while (!(line2.contains("</html>"))) {
                line = rd.readLine();
                line2 += line;
            }
            // wr.close();
            rd.close();

У кого-нибудь есть идея, почему?

Нашел решение.В Android 2.2 нет «Set-Cookie», это «set-cookie»

1 Ответ

0 голосов
/ 04 февраля 2012

Это не Android, а HTTP. Заголовок HTTP для файлов cookie - Set-Cookie. Возможно, Android 2.3+ ведет себя странно, но в HTTP-запросе / ответе не должно быть изменений заголовков. Вы должны подать это как ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...