2011-11-29 72 views
1

我們使用Android API並使用HTTPDefaultClient進行發佈,當我們收到標題時,我們沒有收到我們需要的「Set-Cookie」標題 - 但是當我們嘗試使用原始套接字我們得到它相同的URL。HTTPDefaultClient:無法獲取Set-Cookie標頭

URL正在從我們的Android應用程序接收到正確的信息,但我們似乎無法從中檢索到此標題。

任何人都可以幫忙嗎?它驅使我們便盆似乎有充足的導遊給自己設定一個cookie,但沒有我們能找到找回它

try { 
     HttpClient client = new DefaultHttpClient(); 
     DefaultHttpClient defaultClient = new DefaultHttpClient(); 
     HttpGet request = new HttpGet(); 
     request.setURI(new URI(loginUrl)); 
     HttpResponse response = client.execute(request); 

     Header[] headers = response.getAllHeaders(); 

     System.out.println("-----------------------------------"); 

     for(int i = 0; i < headers.length; i++) { 
     Header header = headers[i]; 
     Log.i("HeaderName", "Header name: " + header.getName()); 
     Log.i("HeaderValue", "Header value: " + header.getValue()); 
     } 
} 
catch(Exception e) {e.printStackTrace();} 
+1

發佈您的代碼。 –

+0

嗨薩瓦爾,代碼貼 – James

回答

0

你的代碼工作完美地與我。

嘗試用http://www.google.it

  try { 
        HttpClient client = new DefaultHttpClient(); 
        //DefaultHttpClient defaultClient = new DefaultHttpClient(); 
        HttpGet request = new HttpGet(); 
        request.setURI(new URI("http://www.google.it")); 
        HttpResponse response = client.execute(request); 

        Header[] headers = response.getAllHeaders(); 

        //System.out.println("-----------------------------------"); 

        for(int i = 0; i < headers.length; i++) { 
        Header header = headers[i]; 
        Log.i("HeaderName", "Header name: " + header.getName()); 
        Log.i("HeaderValue", "Header value: " + header.getValue()); 
        } 
      } 
      catch(Exception e) {e.printStackTrace();} 

輸出:

11-29 15:23:23.630: I/HeaderName(2269): Header name: Date 
11-29 15:23:23.630: I/HeaderValue(2269): Header value: Tue, 29 Nov 2011 14:23:23 GMT 
11-29 15:23:23.630: I/HeaderName(2269): Header name: Expires 
11-29 15:23:23.630: I/HeaderValue(2269): Header value: -1 
11-29 15:23:23.630: I/HeaderName(2269): Header name: Cache-Control 
11-29 15:23:23.630: I/HeaderValue(2269): Header value: private, max-age=0 
11-29 15:23:23.630: I/HeaderName(2269): Header name: Content-Type 
11-29 15:23:23.630: I/HeaderValue(2269): Header value: text/html; charset=ISO-8859-1 
11-29 15:23:23.630: I/HeaderName(2269): Header name: Set-Cookie 
11-29 15:23:23.630: I/HeaderValue(2269): Header value: PREF=ID=125f8d281270e018:FF=0:TM=1322576603:LM=1322576603:S=gPXe6FZbpDuKjcUR; expires=Thu, 28-Nov-2013 14:23:23 GMT; path=/; domain=.google.it 
11-29 15:23:23.630: I/HeaderName(2269): Header name: Set-Cookie 
11-29 15:23:23.630: I/HeaderValue(2269): Header value: NID=53=hnqogpxyCO2Z4H7khIJtp_5Qlx-qewYq1zso-dAXxdZlYXMY6vQ0Gx01HTz8waYz0ICeJ_roBYRmiD_85PaGL6spuu-c1LP52_qxgvx8sEvMrow1M6Qd2mtgUVIUuD2P; expires=Wed, 30-May-2012 14:23:23 GMT; path=/; domain=.google.it; HttpOnly 
11-29 15:23:23.630: I/HeaderName(2269): Header name: Server 
11-29 15:23:23.630: I/HeaderValue(2269): Header value: gws 
11-29 15:23:23.630: I/HeaderName(2269): Header name: X-XSS-Protection 
11-29 15:23:23.630: I/HeaderValue(2269): Header value: 1; mode=block 
11-29 15:23:23.630: I/HeaderName(2269): Header name: X-Frame-Options 
11-29 15:23:23.630: I/HeaderValue(2269): Header value: SAMEORIGIN 
11-29 15:23:23.630: I/HeaderName(2269): Header name: Transfer-Encoding 
11-29 15:23:23.630: I/HeaderValue(2269): Header value: chunked 

你確定收到的響應應該包含在Set-Cookie頭?

編輯:您是否已將互聯網權限添加到AndroidManifest.xml文件?

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.yourpackage.app" ...> 
    <uses-sdk android:minSdkVersion="##" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 

    <application ...> 
     ... 
    </application> 
</manifest> 
+1

謝謝維託,你絕對正確的它做工精細,什麼是奇一個網站,我們正在試圖獲得一個cookie從我們不能(因此混亂)得到它。 我們可以得到它,當我們發佈原料,當我們發佈使用curl和通過Web瀏覽器只是沒有當我們使用httpdefaultclient,任何想法? – James