Search

Android - 使用 HttpURLConnection 自動轉址失效的解決方式

2015-10-31 11:30 AM

基本上 HttpURLConnection 是會自動處理轉址動作的

但只有一個情況例外

就是 http 協定轉換為 https 協定時

此時由於安全性改變 預設會要求開發者提示使用者

但若要使用程式讀取網頁內容時將會導致無法取得正確的網頁內容

這時我們可以使用以下方式達成協定轉換時的自動轉址

只要加入一段轉址判斷即可

程式碼範例
int statusCode = connection.getResponseCode();

// https redirect
if (statusCode == HttpURLConnection.HTTP_MOVED_TEMP || statusCode == HttpURLConnection.HTTP_MOVED_PERM
        || statusCode == HttpURLConnection.HTTP_SEE_OTHER){
    String newUrl = connection.getHeaderField("Location");
    String cookies = connection.getHeaderField("Set-Cookie");
    connection = (HttpURLConnection) new URL(newUrl).openConnection();
    connection.setRequestProperty("Cookie", cookies);
}
各項資料連結
Android - HttpURLConnection 實作 HttpRequest 取得網頁內容(HTML, XML, JSON)
Android HttpURLConnection

No comments:

Post a Comment