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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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