HttpURLConnection碰到連續302跳轉的問題 – Android移動開發技術文章_手機開發 Android移動開發教學課程

用HttpURLConnection聯網的代碼:

      HttpURLConnection conn = null;
      URL url = new URL("http://10.0.0.172/");
      conn = (HttpURLConnection) url.openConnection();

      conn .setRequestMethod("POST");
      conn .setDoInput(true);
      conn .setDoOutput(true);
      conn.setRequestProperty("X-Online-Host","www.xxxx.com");

      conn.setConnectTimeout(30000); // 30秒超時
      conn.connect();

 

如果返回的頁面是一個302跳轉,會自動跳轉,但是如果跳轉過去後還是一個302跳轉,就卡在connect()這裡瞭,超時之後一個 connection reset 的 exception. 不論Get還是Post方法,都一樣問題。用setFollowRedirects關掉自動重定向,還是connection reset. 查瞭很長時間,還是弄不出個所以然來,看HttpURLConnection 的實現代碼,redirect大於4次才會拋出一個Too many redirects 的異常,這才兩個302就掛瞭…最後換用org.apache.http包裡的東西,就沒有問題。

 

  DefaultHttpClient httpClient = new DefaultHttpClient();

  HttpHost proxy = new HttpHost("10.0.0.172", 80);
  httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY,proxy);
  HttpConnectionParams.setConnectionTimeout(httpClient.getParams(),20 * 1000);
  HttpConnectionParams.setSoTimeout(httpClient.getParams(), 20 * 1000);
  HttpGet httpget = new HttpGet(theurl);
  HttpResponse response = httpClient.execute(httpget);

 

無論是自動跳轉還是手動處理跳轉都沒有問題

作者 liujian885

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *