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 :
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 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);
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
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())); } }
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
Partager