Рубрики
Без рубрики

Java–сервер вернул код ответа HTTP: 403 для URL-адреса

– Java -Сервер вернул код ответа HTTP: 403 для URL-адреса

Простая программа Java пытается загрузить что-то из Интернета:

  try (InputStream is = new URL(url).openStream();
       BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
      while ((line = br.readLine()) != null) {
          result.append(line);
      }
  }

Но некоторые веб-серверы возвращают следующие ошибки HTTP 403?

Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: https://mkyong.com
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1919)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1515)
	at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:250)
	at java.base/java.net.URL.openStream(URL.java:1139)

Решение

Чтобы исправить это, добавьте User-Agent в заголовки HTTP-запросов следующим образом:

package com.mkyong;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class JavaDownloadSample {

    public static void main(String[] args) throws IOException {

        String result = downloadWebPage("https://mkyong.com");
        System.out.println(result);

    }

    private static String downloadWebPage(String url) throws IOException {

        StringBuilder result = new StringBuilder();
        String line;

        // add user agent 
        URLConnection urlConnection = new URL(url).openConnection();
        urlConnection.addRequestProperty("User-Agent", "Mozilla");
        urlConnection.setReadTimeout(5000);
        urlConnection.setConnectTimeout(5000);

        try (InputStream is = new URL(url).openStream();
             BufferedReader br = new BufferedReader(new InputStreamReader(is))) {

            while ((line = br.readLine()) != null) {
                result.append(line);
            }

        }

        return result.toString();

    }

}

Рекомендации

Оригинал: “https://mkyong.com/java/java-server-returned-http-response-code-403-for-url/”