我需要使用 java 使用 REST Web 服务,传递域用户帐户的凭据。
现在我正在用经典的asp来做
set xmlHttp = server.createObject( "msxml2.serverxmlhttp" )
xmlHttp.open method, url, false, domain & "\" & user, password
xmlHttp.send body
out = xmlHttp.responseText
set xmlHttp = nothing
并使用 asp.net
HttpWebRequest request = (HttpWebRequest) WebRequest.Create( url );
request.Credentials = new NetworkCredential(user, password, domain);
request.Method = WebRequestMethods.Http.Get
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
StreamReader outStream = new StreamReader( response.GetResponseStream(), Encoding.UTF8) ;
output = outStream.ReadToEnd();
我怎样才能用java实现这个?考虑到我没有使用当前登录用户的凭据,我正在指定域帐户(我有密码)
请告诉我这就像经典的 asp 和 asp.net 一样简单......
根据这一页 http://oaklandsoftware.com/papers/ntlm.html, you can使用内置的 JRE 类,但需要注意的是早期版本的 Java 只能在 Windows 计算机上执行此操作。
但是,如果您愿意忍受第三方依赖,IMOApache Commons HttpClient 3.x http://hc.apache.org/httpclient-3.x/index.html是要走的路。Here http://hc.apache.org/httpclient-3.x/authentication.html是使用身份验证的文档,包括 NTLM。一般来说,HttpClient 是一个功能更丰富的库。
The latest version of HttpClient is 4.0, but apparently this version does not support NTLM http://hc.apache.org/httpcomponents-client/ntlm.html this version requires a tiny bit of extra work http://hc.apache.org/httpcomponents-client/ntlm.html.
这就是我的think代码看起来像,虽然我还没有尝试过:
HttpClient httpClient = new HttpClient();
httpClient.getState().setCredentials(AuthScope.ANY, new NTCredentials(user, password, hostPortionOfURL, domain));
GetMethod request = new GetMethod(url);
BufferedReader reader = new InputStreamReader(request.getResponseBodyAsStream());
祝你好运。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)