apache httpclient + l'Authentification ntlm
J'ai un client pour télécharger un fichier sur un serveur via le protocole https post. Il utilise un proxy et ceci est mon code
public void upload() throws Exception {
//create default client
DefaultHttpClient client = new DefaultHttpClient();
//set proxy authentication if specified
if (proxy.equals("yes") && proxyAuth.equals("yes")){
client.getCredentialsProvider().setCredentials(
new AuthScope(address, port),
new UsernamePasswordCredentials(proxyUsername, proxyPassword));
}
//set proxy if specified
if (proxy.equals("yes")){
HttpHost proxy = new HttpHost(address, port);
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);
}
HttpPost post = new HttpPost(url);
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
File dir = new File(inputFilePath);
File[] fileArray = dir.listFiles();
File file = fileArray[0];
FileBody uploadFilePart = new FileBody(file);
entity.addPart("file", uploadFilePart);
entity.addPart("username", new StringBody(username));
entity.addPart("password", new StringBody(password));
post.setEntity(entity);
//execute post and get response
String response = EntityUtils.toString(client.execute(post).getEntity(), "UTF-8");
client.getConnectionManager().shutdown();
log4j.info(response);
if(!response.substring(0, 3).equalsIgnoreCase("200")){
Exception e = new Exception("An error has occurred server side: ");
throw e;
}
}
Maintenant le problème est que cela fonctionne parfaitement, parfois, et parfois j'ai l'erreur ci-dessous.
org.apache.http.impl.client.AbstractAuthenticationHandler.selectScheme(AbstractAuthenticationHandler.java:149) - schéma d'Authentification ntlm pas pris en charge"
Avez-vous essayé de suivre le hc.apache.org/httpcomponents-client-ga/ntlm.html les instructions?
ya essayé. mais toujours même problème
si vous utilisez httpclient 3 vous pouvez utiliser cet outil pour simplifier type d'authentification scenarious github.com/DovAmir/httpclientAuthHelper
ya essayé. mais toujours même problème
si vous utilisez httpclient 3 vous pouvez utiliser cet outil pour simplifier type d'authentification scenarious github.com/DovAmir/httpclientAuthHelper
OriginalL'auteur user732362 | 2012-05-14
Vous devez vous connecter pour publier un commentaire.
Vous devez vous inscrire sur le NTLM gestionnaire comme expliqué dans http://hc.apache.org/httpcomponents-client-ga/ntlm.html:
OriginalL'auteur Wim Deblauwe
Essayer d' -
Au lieu de cela:
nouveau UsernamePasswordCredentials(proxyUsername, proxyPassword)
utiliser ceci:
nouveau NTCredentials(proxyUsername, proxyPassword, "localhostname", "domaine")
OriginalL'auteur user2626270