2015-07-10 141 views
1

當使用url「https://www.parcelhero.com」時,代碼會將http響應代碼設爲403,儘管網站已成功打開並且實際響應代碼爲200.請告訴我原因。HTTP響應代碼爲403而不是200,爲什麼?

try { 
        URL url = new URL("https://www.parcelhero.com"); 
     HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 

      connection.setRequestMethod("GET"); 

       connection.connect(); 

      int code = connection.getResponseCode(); 
        //e.printStackTrace(); 
        System.out.println(code); 
        } 
       catch (IOException e) { 

      e.printStackTrace(); 
     } 
+0

你嘗試使用'HttpsURLConnection'類而不是'HttpURLConnection'? http://stackoverflow.com/questions/9960998/using-httpurlconnection-and-httpsurlconnection-to-connect-to-an-https – dnapierata

+0

是的,它也沒有給出預期的代碼。 – user2044296

回答

1

某些網站服務器在發出請求時需要設置某些HTTP標頭。否則,他們會在收到403響應後拒絕該請求。

你只需要使用connection.setRequestProperty()設置請求頭的User-Agent屬性,它的工作:

 try { 
      URL url = new URL("https://www.parcelhero.com"); 
      HttpsURLConnection connection = (HttpsURLConnection) 
      url.openConnection(); 
      connection.setRequestMethod("GET"); 
      connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11"); 
      connection.connect(); 
      int code = connection.getResponseCode(); 
      //e.printStackTrace(); 
      System.out.println(code); 
     } 
     catch (IOException e) { 
      e.printStackTrace(System.out); 
     } 

這裏是測試網絡工作的代碼片段:http://rextester.com/ITB98285

+0

謝謝。但我提供的代碼是爲其他網站(如谷歌)工作,所以有任何具體的原因,我真的很感激你對此的迴應。 – user2044296

+0

我已經更新了我的答案,以包括可能發生這種情況的原因。 – dnapierata

+0

非常感謝@dnapierata在解決我的問題時非常有幫助和深思熟慮。 – user2044296

相關問題