9
votes

Accéder à une URL protégée par mot de passe

J'essaie d'accéder à une URL qui a besoin d'une authentification par un nom d'utilisateur et un mot de passe.

Il n'y a pas d'erreur lors de la construction .. Suis-il manque quelque chose?

C'est la première classe, Définit l'authentificateur qui sera utilisé par le code de réseau xxx

la deuxième classe xxx


1 commentaires

Obtenez-vous une pop up lorsque vous essayez d'accéder à l'URL dans le navigateur


4 Réponses :


3
votes

Votre premier segment de code ne fait pas référence à la deuxième classe. Il devrait avoir ce code:

Authenticator.setDefault(new CustomAuthenticator());


1 commentaires

Bonne prise. Cela devrait être la solution.



2
votes

Avez-vous essayé de préparer le nom d'utilisateur et le mot de passe sur le nom d'hôte de l'URL elle-même? Cela peut vous permettre d'éviter d'utiliser l'authentificateur tout à fait:

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


0 commentaires

1
votes

Cela pourrait être pratique.

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;
}


0 commentaires

0
votes
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());
  }
}
Check above example if it works for you

0 commentaires