2011-07-28 19 views
3

我想要的網址,我感覺幸運按鈕重定向到(又名第一個結果)。我通過在URL:跟着谷歌「我感覺幸運」重定向與httpURLConnection

http://www.google.com/search?&btnI=745&pws=0&q=hello

。到現在,去http://www.hellomagazine.com/

的問題是服務器代碼200(OK)響應,而不是302(重定向),所以我不不知道如何執行重定向,也不知道如何獲取最終的URL。

這是我一直在試圖代碼:

HttpURLConnection connection = (HttpURLConnection)wikiURL.openConnection(); 
      connection.addRequestProperty("User-Agent", "Mozilla/4.76"); 
      connection.setConnectTimeout(15000); 
      connection.setReadTimeout(15000); 
      connection.setInstanceFollowRedirects(false); 
      connection.connect(); 

      System.out.println(connection.getResponseCode()); 
      System.out.println(connection.getHeaderField("Location")); 

這是輸出:

200 
null 

編輯:這個問題似乎是URL本身。它的工作原理與一個我張貼在這裏,但不是這一個,比如:

「http://www.google.com/search & BTNI = 745個& PWS = 0 & Q =%2Bfutebolista +%2Bwikipedia + Marcio + Gabriel,+Atlético-GO「

回答

0

問題是編碼,只好強制UTF-8。我向我展示了200個代碼,因爲在搜索沒有正確編碼的拉丁字符的東西時找不到結果

1
connection.setInstanceFollowRedirects(true); 

是你的問題。您希望這是錯誤的,因爲您不想自動跟蹤重定向;你想檢索重新指定的通知。

+0

對不起,實際上我運行它時是錯誤的。稍後更改它僅用於測試目的。感謝您指出錯誤。但問題仍然存在,因爲它是:) – bluehallu

1

如果我運行代碼,我得到這樣的輸出:

302 
http://www.hellomagazine.com/ 

如果我設置

connection.setInstanceFollowRedirects(true); 

那麼我可以閱讀從

connection.getInputStream() 

如果完全你好網站我把它作爲假,即不遵循重定向,那麼輸出是:

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> 
<TITLE>302 Moved</TITLE></HEAD><BODY> 
<H1>302 Moved</H1> 
The document has moved 
<A HREF="http://www.hellomagazine.com/">here</A>. 
</BODY></HTML> 

這是一個有點奇怪,因爲你正在閱讀的頭沒有實際設置!你可以解析這個身體,當你得到302時尋找HREF,如果它仍然不適合你。

如果你仍然得到200響應,那麼試試這個,讓我們知道的輸出是什麼,請:

BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
StringBuilder sb = new StringBuilder(); 
String line = null; 
while ((line = reader.readLine()) != null) { 
    sb.append(line + "\n"); 
} 
System.out.println(sb.toString()); 

我也安裝Eclipse的TCP/IP監視器,這樣我可以清楚地看到什麼是通過電線發送。

+0

好吧,其實你的回答讓我測試了我沒有的東西。我在這個問題上發佈的網址並不是真正的網址,因爲我認爲問題不在那裏。顯然,它在那裏。正如你所說,用原始網址進行測試會產生一個302響應。現在,試着用這一個: http://www.google.com/search?&btnI=745&pws=0&q=%2Bfutebolista+%2Bwikipedia+Marcio+Gabriel,+Atlético-GO 爲什麼會拋出一個響應碼200現在? (我編輯了這個問題) – bluehallu