Rest Http post请求取消NTLM身份验证(java)
我尝试在Java中使用NTLM自动验证发送一个HttpRest调用。我尝试使用Rest Http post请求取消NTLM身份验证(java),rest,http,http-post,windows-authentication,ntlm,Rest,Http,Http Post,Windows Authentication,Ntlm,我尝试在Java中使用NTLM自动验证发送一个HttpRest调用。我尝试使用org.apache.http库。使用HttpClient发送带有匿名OS身份验证的Post请求不是什么大问题。 但是我在Windows身份验证方面遇到了一些问题。我甚至尝试将CredentialProvider与我自己的Windows凭据一起使用(作为一种折衷方案,我也不喜欢),但我没有成功 是否有一种使用NTLM身份验证从Java代码发送post请求的简单方法 还有其他更适合我需要的库吗?我仍然不知道为什么来自大约
org.apache.http
库。使用HttpClient发送带有匿名OS身份验证的Post请求不是什么大问题。
但是我在Windows身份验证方面遇到了一些问题。我甚至尝试将CredentialProvider与我自己的Windows凭据一起使用(作为一种折衷方案,我也不喜欢),但我没有成功
是否有一种使用NTLM身份验证从Java代码发送post请求的简单方法
还有其他更适合我需要的库吗?我仍然不知道为什么来自大约NTLM认证的doku对我不起作用。 我最终解决了我的问题,方法与上所述的基本身份验证文档类似 现在看起来是这样的:
...
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY,
new NTCredentials("username", "passwd", hostname, "domain.at"));
HttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(credsProvider).build();
HttpPost post = new HttpPost("http://www.example.com"));
StringEntity input = new StringEntity(bodyAsString, HTTP.UTF_8);
input.setContentType("application/json");
input.setContentEncoding("UTF-8");
post.setEntity(input);
post.setHeader("Accept", "application/json");
post.setHeader("Content-type", "application/json");
HttpResponse response = client.execute(post);
...