Доступ к URL, защищенному паролем

Я пытаюсь получить доступ к URL-адресу, для которого требуется аутентификация по имени пользователя и паролю.

При построении ошибок нет. Я что-то пропустил?

Это первый класс, он устанавливает аутентификатор, который будет использоваться сетевым кодом

public class AccessPasswordProtectedURLWithAuthenticator { public static void main(String[] args) { try { // when a proxy or an HTTP server asks for authentication. Authenticator.setDefault(new Authenticator(){}); URL url = new URL("http://website.html"); // read text returned by server BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); String line; while ((line = in.readLine()) != null) { System.out.println(line); } in.close(); } catch (MalformedURLException e) { System.out.println("Malformed URL: " + e.getMessage()); } catch (IOException e) { System.out.println("I/O Error: " + e.getMessage()); } } } 

Второй класс

  public class CustomAuthenticator extends Authenticator{ /// Called when password authorization is needed protected PasswordAuthentication getPasswordAuthentication() { /// Get information about the request String prompt = getRequestingPrompt(); String hostname = getRequestingHost(); InetAddress ipaddr = getRequestingSite(); int port = getRequestingPort(); String username = "Administrator"; String password = "Administrator"; /// Return the information (a data holder that is used by Authenticator) return new PasswordAuthentication(username, password.toCharArray()); } } 

Solutions Collecting From Web of "Доступ к URL, защищенному паролем"

Ваш первый сегмент кода не ссылается на второй класс. Он должен иметь этот код:

 Authenticator.setDefault(new CustomAuthenticator()); 

Вы пробовали добавлять имя пользователя и пароль к имени хоста в самом URL-адресе? Это может позволить вам вообще не использовать Authenticator:

 URL url = new URL("http://username:password@website.html"); 

Это может быть удобно.

 private HttpURLConnection getJsonConnection(String urlString) throws IOException { URL url = new URL(urlString); HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setRequestProperty("Content-Type", "application/json;charset=utf-8"); String userCredentials = "username:password"; String basicAuth = "Basic " + Base64.encodeToString(userCredentials.getBytes(), Base64.DEFAULT); urlConnection.setRequestProperty("Authorization", basicAuth); return urlConnection; } private String getResponse(HttpURLConnection urlConnection) throws IOException { BufferedReader bufferedReader = null; try { if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) { bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = bufferedReader.readLine()) != null) { response.append(inputLine); } return response.toString(); } } catch (IOException e) { Logger.error(e); } finally { if (bufferedReader != null) { bufferedReader.close(); } } return null; } 
 import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.Authenticator; import java.net.InetAddress; import java.net.PasswordAuthentication; import java.net.URL; public class Main { public static void main(String[] argv) throws Exception { Authenticator.setDefault(new MyAuthenticator()); URL url = new URL("http://hostname:80/index.html"); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); String str; while ((str = in.readLine()) != null) { System.out.println(str); } in.close(); } } class MyAuthenticator extends Authenticator { protected PasswordAuthentication getPasswordAuthentication() { String promptString = getRequestingPrompt(); System.out.println(promptString); String hostname = getRequestingHost(); System.out.println(hostname); InetAddress ipaddr = getRequestingSite(); System.out.println(ipaddr); int port = getRequestingPort(); String username = "Administrator"; String password = "Administrator"; return new PasswordAuthentication(username, password.toCharArray()); } } 

Проверьте пример выше, если он работает для вас