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服務端與使用HttpClient的Android客戶端簡單示例
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