簡體   English   中英

盡管檢查了狀態代碼,但jsoup仍拋出204狀態

[英]jsoup throws 204 status despite a status code check

雖然我通過jsoup連接到url。 這是我的代碼片段:

  for (int j = 0; j < unq_urls.size(); j++) {

      Response response2 = Jsoup.connect(unq_urls.get(j))
             .userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21")
             .timeout(100*1000)
             .ignoreContentType(true)
             .execute();

      if (response2.statusCode() == 200) {
...}

}

執行連接后,jsoup會引發以下錯誤:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=204, URL=https://www.google.com/gen_204?reason=EmptyURL
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:459)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:475)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:475)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:434)
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:181)
    at cseapiandparsing.CSE_Author_Name_Dis.<init>(CSE_Author_Name_Dis.java:187)
    at cseapiandparsing.CSE_Author_Name_Dis.main(CSE_Author_Name_Dis.java:263)

我該如何克服? 我的意思是,如果jsoup無法連接到特定URL,我希望它傳遞另一個URL。 當花費太多時間連接URL時,與此jsoup相關的操作還會引發超時錯誤。 為此,我已經放置了.timeout(100 * 1000)選項。 但是,我想知道如果對當前URL的嘗試花費的時間太長,是否可以傳遞到另一個URL?

提前致謝。

我相信您在這里正在尋找一種try-catch機制。

try子句包圍Jsoup.connect部分,然后在catch子句中優雅地處理異常,在您的情況下,這些異常將繼續到下一個循環。

跳過當前時間太長,只需將timeout()值設置為所需的等待時間,如果超過該時間,則會拋出超時異常,再次由catch子句catch 試試我在下面發布的代碼:

for (int j = 0; j < unq_urls.size(); j++) {
  try{
      Response response2 = Jsoup.connect(unq_urls.get(j))
         .userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21")
         .timeout(100*1000)
         .ignoreContentType(true)
         .execute();
  } catch(Exception e) {
      continue; //continue to the next loop if exception occurs
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM