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? P>
C'est la première classe, Définit l'authentificateur qui sera utilisé par le code de réseau p> la deuxième classe p>
4 Réponses :
Votre premier segment de code ne fait pas référence à la deuxième classe. Il devrait avoir ce code:
Authenticator.setDefault(new CustomAuthenticator());
Bonne prise. Cela devrait être la solution.
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");
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;
}
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
Obtenez-vous une pop up lorsque vous essayez d'accéder à l'URL dans le navigateur