熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

HttpClient get請求在HttpResponse中無法獲得Location的問題

2013-11-23 18:56:09  來源: Java核心技術 

  我通過httpclient的get方法訪問通過返回的response的頭部的location可以得到服務器的重定向地址(Location)

  在java環境下測試都沒問題

  可是在安卓SDK環境下 卻得不到response的location

  通過抓包分析發現在android下

  httpclient的實例執行get請求後一起連重定向的get方法都執行了

  所以最後得到的response是重定向之後地址的get請求的response所以得不到locatioon而且responseCode==而不是在java測試環境下的說明這個時候的response是重定向之後的response

  這個時候需要阻止HttpClient的自動重定向方法如下

  public static String getLocationMethod(String reqUrl Context context) {

  DefaultHttpClient httpclient = new DefaultHttpClient();

  String location = null;

  int responseCode = ;

  try {

  final HttpGet request = new HttpGet(reqUrl);

  HttpParams params = new BasicHttpParams();

  paramssetParameter(redirects false); // 默認不讓重定向

  // 這樣就能拿到Location頭了

  requestsetParams(params);

  HttpResponse response = (request);

  responseCode = responsegetStatusLine()getStatusCode();

  Header[] headers = responsegetAllHeaders();

  if(responseCode==){

  Header locationHeader = responsegetFirstHeader(Location);

  if (locationHeader != null) {

  location = locationHeadergetValue();

  }

  }

  } catch (Exception e) {

  eprintStackTrace();

  MyLogd(exception= etoString());

  }

  return location;

  }

  添加 paramssetParameter(redirects false);之後返回結果如下

  ResponseCode=

  Date:Sun Jan :: GMT

  Server:Abloomy Http Server

  Connection:Close

  CacheControl:nostore

  Pragma:nocaches

  LastModified:Sun Jan :: GMT

  ContentTyp:text/html; charset=iso

  ContentLength:

  Expires:Mon Jan :: GM

  Location:?wlanacip=&wlanacname=&wlanuserip=&vslanusermac=fac&vslanessid=ABLOOMYWK


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26007.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.