【问题标题】:NullPointer Exception with Cookie on Android 2.2 - works fine on 2.3 and aboveAndroid 2.2 上带有 Cookie 的 NullPointer 异常 - 在 2.3 及更高版本上运行良好
【发布时间】:2012-02-26 10:12:39
【问题描述】:

-解决了,见帖子底部-

我正在尝试从已建立的连接中获取 cookie。以下代码运行良好,但在 Android 2.2 及更低版本上会引发 NullPointer 异常:

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”

【问题讨论】:

    标签: android http url cookies connection


    【解决方案1】:

    这不是 Android 的东西,而是 HTTP 的东西。 cookie 的 HTTP 标头是 Set-Cookie。也许 Android 2.3+ 的行为很奇怪,但在 HTTP 请求/响应中不应该修改标头。您应该将此作为错误提交。

    【讨论】:

    • "set-cookie" 在 Android 2.3 下不起作用。有没有更通用的方法来获取不依赖于确切拼写的 cookie?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多