1. 程式人生 > >HttpUrlConnection訪問重定向介面

HttpUrlConnection訪問重定向介面

最近在做一個爬蟲專案,需要抓取一些網站的資訊和其中的圖片,抓取過程中發現有一些圖片連結會重定向,而伺服器儲存時不支援重定向,於是想嘗試直接拿到重定向的連結。
藉助Chrome瀏覽器的開發者工具(快捷鍵F12),選擇Network -> Headers,可以看到其重定向後的地址在Response Headers中的Location屬性中。

查閱資料文件可知,
1.類HttpURLConnection提供瞭如下方法:

public void setInstanceFollowRedirects(boolean followRedirects)

Sets whether HTTP redirects (requests with response code 3xx) should be automatically followed by this HttpURLConnection instance.
The default value comes from followRedirects, which defaults to true.
Parameters:
followRedirects a boolean indicating whether or not to follow HTTP redirects.

2.其父類URLConnection有如下方法:

public String getHeaderField(String name)

Returns the value of the named header field.
If called on a connection that sets the same header multiple times with possibly different values, only the last value is returned.
Parameters:
name the name of a header field.
Returns:
the value of the named header field, or null if there is no such field in the header.

由上可知,可以這樣獲取重定向的連結:
呼叫第一個方法設定false,再呼叫第二個方法設定引數為”Location”,即可獲取重定向的連結地址,程式碼示例:

try {
    URL u = new URL(url);
    HttpURLConnection connection = (HttpURLConnection) u.openConnection();
    connection.setInstanceFollowRedirects(false);
    connection.setConnectTimeout(5000);
    connection.setReadTimeout(5000
); int code = connection.getResponseCode(); if(302 == code) { String redirectUrl = connection.getHeaderField("Location"); if(redirectUrl != null && !redirectUrl.isEmpty()) { url = redirectUrl; } } } catch (Exception e) { e.printStackTrace(); }

相關推薦

HttpUrlConnection訪問定向介面

最近在做一個爬蟲專案,需要抓取一些網站的資訊和其中的圖片,抓取過程中發現有一些圖片連結會重定向,而伺服器儲存時不支援重定向,於是想嘗試直接拿到重定向的連結。 藉助Chrome瀏覽器的開發者工具(快捷鍵F12),選擇Network -> Headers,可

過濾驅動 檔案訪問定向方法

  在pre callback 中,使用IoReplaceFileObjectName 修改 Data->Iopb->TargetFileObject 檔案路徑, 然後:                 Data->IoStatus.Status = ST

tomcat無法訪問問題(curl 介面定向

今天給樹莓派用docker裝tomcat,啟動後發現無法訪問 怎麼curl返回都是空,看日誌也沒報錯 最後通過netstat -ano|grep 8080發現,埠繫結在ipv6地址上。 解決方案: 在tomcat的bin目錄下新建setenv.sh,內容為: JA

web專案中實現登陸成功後才能訪問某些頁面,否則自動跳轉到登陸介面,以及對無限迴圈定向的解決

1、不使用過濾器實現,在需要攔截的頁面通過session判斷是否登陸,若沒登陸則跳轉到login.jsp頁面: <% Admin admin = (Admin)session.ge

LAMP架構(apache用戶認證,域名定向,apache訪問日誌)

apache用戶認證 域名重定向 apache訪問日誌 一、apache用戶認證用戶認證就是打開一個網站。會讓你輸入用戶名和密碼。對了才會讓你訪問HTTP,vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf編輯內容如下<Director

nginx的多域http、https同時訪問配置及http定向https

nginx https http nginx的多域http、https同時訪問配置及http重定向https 1、關於ssl 服務證書的申請或生成就略過 2、nginx關於多域名訪問服務器(1)配置nginx中conf文件夾下的nginx.conf加入代碼(環境是windows 2008 ser

SmartAccess禁止通過NetScaler用戶訪問虛擬桌面定向客戶端打印機

edit size 分析 ces access 桌面圖標 打印機 服務 pro SmartAccess禁止通過NetScaler用戶重定向客戶端打印機 介紹 SmartAccess和SmartControl允許您根據用戶連接的方式更改ICA連接行為(例如,禁用客戶端設備映射

TP5專案放在二級目錄下定向訪問不對問題

最近用Thinkphp5做了一個小網站,發現當PHP版本切換成5.5以上版本後 如果訪問地址是全地址 如loacalhost/index/index/index重定向不起作用,提示:No input file specified. 此問題比較好解決,原因是php版本5.5以上專案下的

Qt|Linux工作筆記-非同步呼叫ping命令,定向獲取資訊,介面顯示

邏輯: 1.使用QProcess在開執行緒前設定輸出檔案【setStandardOutputFile】; 2.開一個執行緒,去專門呼叫shell命令,比如ping; 3.Qt讀取重定向檔案,進行介面顯示;   程式執行截圖如下:   原始碼如

Nginx下訪問原始碼.html檔案定向到相對目錄下.php檔案

                                                        請求報錯404故障 故障描述: LNMP環境下發布商城原始碼,通過web請求訪問.html檔案報404錯誤請求檔案不存在,在原始碼裡只存在.php檔案 例子圖

asp.net mvc 判斷使用者是否登入,則定向登入介面

1,建立一個父類控制器,該控制器在繼承控制器,其他子類控制器再繼承父類控制器就能實現第一次訪問子類控制器時都會訪問父類控制器裡面的重定向相方法 2,父類控制器中重寫控制器的一個  OnActionExecuting  則可以實現 程式碼如下:   pub

轉發以及定向(包含後臺介面中是否有return語句分析)

重定向與轉發 轉發:RequestDispatcher介面(再使用forward方法實現轉發) 重定向:HttpServletResponse介面(用sendRedirect方法實現重定向) 本質區別:轉發只發送了一次請求,而重定向則傳送了兩次請求 具體分析:①請

jsp-servlet專案的定向訪問路徑問題

用純servlet和jsp開發的javaweb專案,在servlet裡面用到了請求重定向,本來呢,在本地伺服器執行都沒問題,但是一部署到雲伺服器上,就訪問不了了,後來仔細查看了執行日誌,發現在每次後臺重定向頁面的時候出錯,再檢查重定向語句,發現問題在於重定向的路徑寫法上,先看一下原來的:

x64系統的判斷和x64下檔案和登錄檔訪問定向——補記

        原來的地址之前在(3)裡面討論過%ProgramFiles%這個環境變數的指向問題,其實在x64環境下面還有兩個環境變數可以使用:%ProgramFiles(x86)%和%ProgramW6432%,如果你的系統安裝在C盤,那麼對應關係是這樣的(注32位系統只

Exchange 定向OWA訪問後會話超時解決辦法

修改了IIS重定向OWA,並在OWA中去掉了要求SSL,登入後不能開啟郵箱、新建郵件等會話,提示:“無法完成您的請求。發生這種情可能是由於安全原因或會話超時” 解決辦法: 經過一系列排錯,問

HTTP請求定向介面,獲取該介面定向地址

正常來說,java程式碼發起HTTP請求到一個重定向的介面,請求的結果為介面內重定向後頁面的html原始碼。 對於這種重定向介面,檢視控制檯可以看到,其重定向後的地址在Response Headers中的Location屬性中: 查閱文件可知HttpUR

HttpURLConnection 訪問伺服器介面

1,客戶端請求工具類 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter

XAMPP訪問localhost時總是定向到localhost/xampp的問題

安裝好XAMPP之後,在瀏覽器中輸入localhost,發現並不是開啟配置檔案httpd.conf中所指定的xampp/htdocs中的index.html,而是總是跳轉到xampp/htdocs/xampp/index.php, 其原因在於xampp/htdocs中的in

利用javascript Location訪問Url,定向,重新整理頁面

本文介紹怎麼使用javascript Location物件讀和修改Url.怎麼過載或重新整理頁面。 javascript提供了許多方法訪問,修改當前使用者在瀏覽器中訪問的url.所有的這些技術都是基於location物件的。它是作為window物件的屬性。你可以生成一個包含當前url的新location物件

java Print流 和 定向

print流 java 定向 可視化編輯器,alt+1到9鍵,切換到工具區,tab鍵,選擇按鈕,esc鍵,返回編輯 public class TestIO { public static void main(String[] args) { String filename = "D:" + Fi