2011-11-29 58 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