Application Android, Proxy et authentification
Bonjour
Dans le cadre du développement d'une application Android pour mon entreprise, je dois pouvoir communiquer avec un serveur à travers un proxy avec une authentification.
Voici le code que j'ai écris :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
final HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(PROXY_NAME, PROXY_PORT)));
Authenticator.setDefault(new NtlmAuthenticator(PROXY_USERNAME, PROXY_PASSWORD));
connection.setConnectTimeout(5000);
connection.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
connection.setDoInput(true);
connection.setDoOutput(true);
final int retCode = connection.getResponseCode();
System.out.println("Return code : " + retCode); |
avec la classe
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
private class NtlmAuthenticator extends Authenticator {
private final String username;
private final String password;
public NtlmAuthenticator(final String username, final String password) {
super();
this.username = username;
this.password = password;
}
@Override
public PasswordAuthentication getPasswordAuthentication() {
System.out.println("Get password auth");
return (new PasswordAuthentication(username, password.toCharArray()));
}
} |
Malheureusement, j'obtiens toujours un response code égal à 407 et je me suis rendu compte que je ne passais jamais dans le méthode getPasswordAuthentication
Ce même programme fonctionne très bien avec un programme Java non Android.
Ma version d'Android est la 4.4.4 et j'ai vu qu'elle utilisait OkHttp pour les requêtes. En debuggant et en entrant dans le code d'Android, je me suis rendu compte que l'objet OkHttp contenait bien ma configuration de proxy mais pas mon authenticator.
Je ne vois pas trop comment faire.
Pourriez-vous m'aider
Merci d'avance
Cordialement