2012-08-05 26 views
2

從輸出中,我瞭解到網站主頁會刷新並將請求重定向到其他瀏覽器上可以正常使用的頁面,但它並不代碼。那麼如何隨重定向一起前進?如何在打開url連接時處理網站主頁重定向

try { 
      URL url = StringUtils.stringToURL(link); 
      URLConnection dbGatewayURL = url.openConnection(); 
      dbGatewayURL.setConnectTimeout(timeout); 
      BufferedReader in = new BufferedReader(new InputStreamReader(
        dbGatewayURL.getInputStream())); 
      StringBuffer responseData = new StringBuffer(); 
      String line = ""; 
      while ((line = in.readLine()) != null) { 
       responseData.append(line + "\n"); 
      } 

外出時的賣出期權:

<HEAD> 
<META HTTP-EQUIV=REFRESH CONTENT="0;URL=/sites/engbm"> 
</HEAD> 

當我嘗試httpUrlConn.setRequestMethod("HEAD");

回答

2

您必須解析輸出並查找<META HTTP-EQUIV=REFRESH>標記。它告訴瀏覽器響應頭等價物被包含在內容本身中。在這種情況下,它告訴瀏覽器在0秒之後重定向到/sites/engbm。只是爲了清理META HTTP-EQUIV是什麼:http://www.w3schools.com/tags/att_meta_http_equiv.asp

的HTTP-equiv屬性提供了內容屬性的信息/值的HTTP標頭。

http-equiv屬性可用於模擬HTTP響應標頭。

如果設置了name屬性,則不應設置http-equiv屬性。

至於:

當我嘗試httpUrlConn.setRequestMethod("HEAD");

這引發了文件例外意外結束。這是因爲HEAD requests have no response body

2

你需要採取HTTP頭仔細看看這引發了文件例外的意外結束。重定向的響應代碼是302.每個重定向響應都帶有位置標題。一個典型的重定向響應是如下

HTTP/1.1 301 Moved Permanently 
Location: http://www.example.org/ 
Content-Type: text/html 
Content-Length: 174 

讀取響應代碼(HttpURLConnection.getResponseCode())然後讀取頭和得到Location頭的值,使該URL的新請求。

+0

類型3xx的所有HTTP響應代碼通常都與需要重定向相關聯。這包括例如'302 Found'。不是所有的重定向都是301暗示的。 – 2012-08-05 17:57:15

+0

@Santosh我得到的響應代碼是200,標題與我之前發佈的不包含位置屬性的標題相同,請詳細說明你的答案的最後部分 – 2012-08-05 18:04:43

+0

OP的問題是重定向是在返回的內容*中發佈的,而不是作爲HTTP響應。 – 2012-08-05 18:06:08

相關問題