java使用HttpURLConnection檢索網站時403錯誤處理方式,httpurlconnection

來源:互聯網
上載者:User

java使用HttpURLConnection檢索網站時403錯誤處理方式,httpurlconnection

java使用HttpURLConnection檢索網站時403錯誤處理方式:

我們通過代碼方式訪問網站時會報錯:



此種情況分2中類型,

1.需要登入才可以訪問;

2.需要設定User-Agent來欺騙伺服器。

connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

User Agent說明:

User Agent中文名為使用者代理程式,簡稱 UA,它是一個特殊字元串頭,使得伺服器能夠識別客戶使用的作業系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器外掛程式等。  

一些網站常常通過判斷 UA 來給不同的作業系統、不同的瀏覽器發送不同的頁面,因此可能造成某些頁面無法在某個瀏覽器中正常顯示,但通過偽裝 UA 可以繞過檢測。

java訪問網站代碼:

    /**     *  發起http get請求擷取網頁原始碼      * @param requestUrl     * @param isUserAgent 是否設定欺騙伺服器     * @return     */         public static String httpRequest(String requestUrl,boolean isUserAgent) {          StringBuffer buffer = null;            try {              // 建立串連              URL url = new URL(requestUrl);              HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();              httpUrlConn.setDoInput(true);              httpUrlConn.setRequestMethod("GET");              if(isUserAgent){            httpUrlConn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");            }            // 擷取輸入資料流              InputStream inputStream = httpUrlConn.getInputStream();              InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");              BufferedReader bufferedReader = new BufferedReader(inputStreamReader);                // 讀取返回結果              buffer = new StringBuffer();              String str = null;              while ((str = bufferedReader.readLine()) != null) {                  buffer.append(str);              }                // 釋放資源              bufferedReader.close();              inputStreamReader.close();              inputStream.close();              httpUrlConn.disconnect();          } catch (Exception e) {              e.printStackTrace();          }          return buffer.toString();      }  

執行結果:順利擷取到網頁代碼。





java 使用HttpURLConnection伺服器,如果發送時沒有問題,但返回結果時網路斷了,怎處理?

.setConnectTimeout() 指的是與請求網址的伺服器建立串連的逾時時間。
setReadTimeout() 指的是建立串連後如果指定時間內伺服器沒有返回資料的後逾時。
503是錯誤碼,能返回就說明伺服器返回了response。逾時指的是你指定的時間沒有收到伺服器的response。

不管哪種逾時都不有狀態代碼返回。因為返回是在response響應中的,而就是在設定的時間內沒有收到響應,才會逾時。如果出現逾時的話會拋出一個異常。你可以catch逾時異常,然後根據需要處理就行了。
 
java 對於HttpURLConnection的問題

加入下面代碼試下
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
httpURLConnection.setRequestMethod("POST");
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.