lam*_*noy 1 java sharepoint soap ntlm cxf
我写使用CXF框架(版本:2.7.8)SOAP客户端为SharePoint 2007年我跟随添加NTLM支持的在线文档这里.我有客户工作和跟踪的HTTP会话显示NTLM凭据被发送,但是,我仍然收到401未授权的响应.
码:
Lists listService = new Lists();
ListsSoap port = listService.getListsSoap();
BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put("use.async.http.conduit", Boolean.TRUE);
Credentials creds = new NTCredentials(USER, PASS, "", DOMAIN);
bp.getRequestContext().put(Credentials.class.getName(), creds);
Client client = ClientProxy.getClient(proxy);
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(36000);
httpClientPolicy.setAllowChunking(false);
httpClientPolicy.setAutoRedirect(true);
http.setClient(httpClientPolicy);
// Build request and execute
Run Code Online (Sandbox Code Playgroud)
有趣的是,我使用HTTP PUT为WebDAV编写了一个类似的客户端,使用Apache HTTPClient库上传文档,并且能够使用NTLM成功进行身份验证.此外,我能够使用SOAPUI来调用我正在尝试构建Java客户端的相同列表Web服务,并且它也使用NTLM成功进行了身份验证.
我假设NTLM的实现在CXF和HTTPClient之间是不同的.有关我的CXF实施有什么问题的想法?或者我如何让它镜像HTTPClient实现?
请试试这个!
HTTPConduit http = (HTTPConduit)client.getConduit();
AsyncHTTPConduit conduit = (AsyncHTTPConduit)http;
DefaultHttpAsyncClient defaultHttpAsyncClient;
defaultHttpAsyncClient = conduit.getHttpAsyncClient();
defaultHttpAsyncClient.getCredentialsProvider().setCredentials( AuthScope.ANY,
new NTCredentials( USER,PWD, "", DOM ) );
conduit.getClient().setAllowChunking( false );
conduit.getClient().setAutoRedirect( true );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5732 次 |
| 最近记录: |