[英]apache httpclient + ntlm Authentication
I have a client to upload a file to a server over https post. 我有一个客户端通过https帖子将文件上传到服务器。 It uses proxy and this is my 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;
}
}
Now the problem is this works perfectly sometimes and sometimes i get the below error. 现在问题是这有时完美有效,有时我得到以下错误。
org.apache.http.impl.client.AbstractAuthenticationHandler.selectScheme(AbstractAuthenticationHandler.java:149) - Authentication scheme ntlm not supported" org.apache.http.impl.client.AbstractAuthenticationHandler.selectScheme(AbstractAuthenticationHandler.java:149) - 不支持身份验证方案ntlm“
您需要按照http://hc.apache.org/httpcomponents-client-ga/ntlm.html中的说明注册NTLM处理程序:
client.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());
Try to - Instead of this: new UsernamePasswordCredentials(proxyUsername, proxyPassword) 尝试 - 而不是这个:新的UsernamePasswordCredentials(proxyUsername,proxyPassword)
use this: new NTCredentials(proxyUsername, proxyPassword, "localhostname", "domain") 使用此:new NTCredentials(proxyUsername,proxyPassword,“localhostname”,“domain”)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.