2012-02-03 27 views
1

- この上で正常に動作しますが、私は確立された接続からクッキーを取得しようとしています後にNullPointer例外 - 2.3上と

の下部を参照してください、解決されます。次のコードはうまく動作しますが、それは、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に「セットクッキー」はなく、「セットクッキー」

答えて

0

これはAndroidのものではなく、HTTPのものです。 CookieのHTTPヘッダーはSet-Cookieです。おそらくAndroid 2.3以降が奇妙な動作をしているかもしれませんが、HTTPリクエスト/レスポンスにヘッダーは変更しないでください。これをバグとして報告してください。

+1

"set-cookie"はAndroid 2.3では動作しません。正確なスペルに依存しないクッキーを入手するより一般的な方法はありますか? – skyworxx

関連する問題