最近接到一個新的需求,要求給定一個url地址,獲取該網頁的title和圖標地址,大致的思路是使用HttpUrlConnection抓取網頁的源碼,然后使用正則表達式匹配網頁的標題和圖標。
開發測試的過程中遇到了N多問題,簡單總結一下;
(一).限制返回的網頁大小
在使用HttpUrlConnection獲取網頁內容時,最基本的做法就是獲取http輸入流,然后讀取完整的網頁內容,最后關閉輸入流和http連接,但這里需要考慮的就是由於需求只是為了獲取網頁頭信息中的title和icon,因此不需要下載完整的網頁內容,只需要保證取到完整的頭信息就行,思路就是從http輸入流中讀取指定大小的數據。
1 try (InputStream inputStream = httpURLConnection.getInputStream(); 2 InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 3 BufferedReader reader = new BufferedReader(inputStreamReader);) { 4 5 // 只獲取10KB的數據 6 char[] chars = new char[10 * 1024]; 7 reader.read(chars, 0, 10 * 1024); 8 9 httpURLConnection.disconnect(); 10 return new String(chars); 11 }
驗證了幾個比較大型的網站,10KB的數據足夠獲取到head信息。