1. 程式人生 > >android客戶端HttpClient URL 被重定向的解決辦法

android客戶端HttpClient URL 被重定向的解決辦法

  我們在開發時經常使用到網路請求,但是有時候會遇到服務端給的url不是最終的,我們用這個url在瀏覽器上鍊接下,會發現url改變了,這就是url不是最終的,而是被重定向後的連結地址。

  那我們如何解決這種問題呢,不多說,看程式碼:

public class HttpClientURLRedirectUtils {

/**
* Http URL重定向
*/
public static String redirect(String url) {
DefaultHttpClient httpclient = null;
try {
httpclient = new DefaultHttpClient();
httpclient.setRedirectHandler(new RedirectHandler() {

@Override
public boolean isRedirectRequested(HttpResponse response,
HttpContext context) {
return false;
}

@Override
public URI getLocationURI(HttpResponse response, HttpContext context)
throws org.apache.http.ProtocolException {
return null;
}
});

HttpGet httpget = new HttpGet(url);
HttpResponse response = httpclient.execute(httpget);

int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
// 獲取響應實體
HttpEntity entity = response.getEntity();
if (entity != null) {
// 列印響應內容長度
// System.out.println("Response content length: " + entity.getContentLength());
// 列印響應內容
// System.out.println("Response content: " + EntityUtils.toString(entity));
}
} else if (statusCode == HttpStatus.SC_MOVED_TEMPORARILY
|| statusCode == HttpStatus.SC_MOVED_PERMANENTLY) {

// System.out.println("當前頁面發生重定向了---");

org.apache.http.Header[] headers = response.getHeaders("Location");
if(headers!=null && headers.length>0){
String redirectUrl = headers[0].getValue();
// System.out.println("重定向的URL:"+redirectUrl);
redirectUrl = redirectUrl.replace(" ", "%20");
return redirectUrl;
}
}

} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 關閉連線,釋放資源
httpclient.getConnectionManager().shutdown();
}
return url;
}

}

相關推薦

android客戶HttpClient URL 定向解決辦法

  我們在開發時經常使用到網路請求,但是有時候會遇到服務端給的url不是最終的,我們用這個url在瀏覽器上鍊接下,會發現url改變了,這就是url不是最終的,而是被重定向後的連結地址。   那我們如何解決這種問題呢,不多說,看程式碼: public class HttpCl

常用網路瀏覽器和郵件客戶的備份及定向

本文記述的是 Windows 2000 或者 Windows XP 下常用的網路瀏覽器和郵件客戶端的備份及重定向操作方法。一、Internet Explorer / Outlook ExplorerCache臨時目錄重定向:  修改登錄檔 HKEY_CURRENT_USER\

Ubuntu 11.10 MySQL客戶 Emma 6.0 中文亂碼解決辦法

在Linux如果使用mysql的圖形客戶端,我感覺Emma算一個好用的了。 比起mysql自己的Mysql Query Browser 要好, 而且最不能忍受的是Mysql Query Browser 在Ubuntu 11.10 會有程式崩潰現象。 相比而言emma是挺好,

Android不明原因崩潰,不斷解決辦法記錄

Android不明原因崩潰,不斷重啟記錄這幾天在開發APP過程中,突然APP崩潰,LogCat沒有異常輸出,過一會發現LogCat又有輸出,說明APP重啟了,然後又掛掉,重啟,掛掉,重啟。。。。。,因為沒有錯誤日誌,初步判斷是SO庫異常導致,但是SO庫以前都是能用的,最近也沒

ubuntu 11.10 mysql 客戶 Emma 6.0 中文亂碼解決辦法

在linux如果使用mysql的圖形客戶端,我感覺emma算一個好用的了。 比起mysql自己的Mysql Query Browser 要好, 而且最不能忍受的是Mysql Query Browser 在ubuntu 11.10 會有程式崩潰現象。 相比而言emma是挺好,

[Ubuntu 14.04] Samba客戶不能修改檔案的解決辦法

版本: Ubuntu 14.04.2 LTS (GNU/Linux 3.16.0-30-generic x86_64) 繼上一篇配置好Samba服務可以訪問讀寫之後又遇到了問題, 客戶端可以修改自己建

51 信用卡管家 Android 客戶內部資料庫檔案可盜取

原文: 真的安全嗎之51信用卡管家Android客戶端審計報告 1.講這個漏洞先要介紹一下一個安卓系統特性:db-journal 檔案是 sqlite 的一個臨時的日誌檔案,主 要用於 sqlite 事務回滾機制,在事務開始時產生,在事務結束時刪除;當程式發生崩潰或者系統斷 電時該檔案將留

WCF服務與使用HttpClientAndroid客戶簡單示例

WCF服務端 Contract using System.Collections.Generic; using System.Runtime.Serialization; using System.ServiceModel; using System.S

HttpClient 4.5 定向到中文URL出現亂碼的解決方案

一、問題描述: 遇到某個 URL A,請求時發現會重定向到某個包含了中文字元的 URL B。原以為只要 HttpClient 開啟了自動重定向的功能,下載 A 指向的頁面輕而易舉,結果卻出乎意料。HttpClient 在獲取重定向後的 URL B 時出現了中文

wifi下的android客戶訪問伺服器URL連線不了

       今天編寫了一個解析json的小程式,在同一個區域網下訪問伺服器返回的json資料總是不成功,除錯的情況下,發現程式碼到URL url = new URL(……)這行就進行不下去了,也就是

MQTT協議學習及實踐(Linux服務Android客戶的例子)

nbsp hub 設備 log config cati href 10.10.4 rmi 前言 MQTT(Message Queuing Telemetry Transport),是一個物聯網傳輸協議,它被設計用於輕量級的發布/訂閱式消息傳輸,旨在為低帶寬和不穩定

WIN10網狐開發環境搭建與Android客戶編譯

ces text water cto img term 技術 分享 環境 http://i2.51cto.com/images/blog/201802/09/2e8eb644b82d1642df8b920f053a7bb0.png?x-oss-process=image/w

網狐Android客戶一鍵發布並安裝到手機

oid post png info clas src log androi http 網狐Android客戶端一鍵發布並安裝到手機

Android客戶與本地服務器Socket通信

msg 初始化 ips print rmi listener 個數 myeclips 開啟 Android客戶端與本地服務器Socket通信 Socket服務器運行結果圖?? 一.客戶端和服務器端的選擇: 客戶端是我們手機端,關於服務器端,只要安裝了JDK,自然就擁有通

工作筆記 ---- Android客戶獲取PSS、CPU、啟動時間、流量、電量的Python代碼

int ESS 電量 nbsp tro activit gin 計算 IT p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 19.0px; font: 13.0px "Helvetica Neue" } 把工

Android客戶性能測試—內存【先碼】

alt sid mem orm cts 部分 報錯 很好 indexof 前言: 1.該內容為APP應用客戶端的性能測試,未涉及後臺,所以並非針對API或數據接口 2.測試的目標項:資源消耗、內存泄露、電量功耗、響應時間 3.客戶端的性能指標:內存、CPU、流量 4.本系列

支付寶客戶架構解析:Android 客戶啟動速度優化之「垃圾回收」

前言 《支付寶客戶端架構解析》系列將從支付寶客戶端的架構設計方案入手,細分拆解客戶端在“容器化框架設計”、“網路優化”、“效能啟動優化”、“自動化日誌收集”、“RPC 元件設計”、“移動應用監控、診斷、定位”等具體實現,帶領大家進一步瞭解支付寶在客戶端架構上的迭代與優化歷程。 本節將介紹支付寶 Andro

學習筆記-Android客戶獲取IP地址

Android獲取Ip的一些方法,在我們開發中,有判斷手機是否聯網,或者想獲得當前手機的Ip地址,當然WIFI連線的和 3G卡的Ip地址當然是不一樣的. 以這種方法不可取! 首先我嘗試瞭如下方法: WifiManager wifiMana

Android 客戶Socket 與 Java服務ServerSocket

Socket程式設計   一、Java網路程式設計基礎知識        1、兩臺計算機間進行通訊需要以下三個條件:            1)、 IP地址(例

Android 客戶使用udp傳送請求並解析xml

1,UDP請求客戶端 package udp; /** * <author> cwj * <time> 2018/8/27 15:29 * <version> * <desc>UDP客戶端 **/ public class