HTTPDefaultClient: не удается получить заголовок файла cookie - PullRequest
1 голос
/ 29 ноября 2011

Мы используем Android API и публикуем сообщения с использованием HTTPDefaultClient, когда мы возвращаем заголовки, мы не получаем требуемый заголовок «Set-Cookie» - однако, когда мы пытаемся использовать тот же URL-адрес с помощью необработанного сокета, мы получаем его.

URL получает правильную информацию из нашего приложения для Android, но мы просто не можем извлечь из него этот заголовок.

Кто-нибудь может помочь?это сводит нас с ума, кажется, есть множество руководств, чтобы самим установить печенье, но мы ничего не смогли найти, чтобы получить его

 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 голосов
/ 29 ноября 2011

Ваш код отлично работает со мной.

Попробуйте с 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>
...