【发布时间】:2016-06-06 15:15:43
【问题描述】:
我正在尝试通过创建 NTLM 引擎(按照 http://hc.apache.org/httpcomponents-client-4.3.x/ntlm.html 上的说明)来使用具有 NTLM 身份验证的 SOAP 服务,以实现 AuthSchemeFactory 并最终将 AuthSchemeFactory 注册到我的 HTTP 客户端。当我使用 HTTP 客户端访问服务时,我收到“状态代码 - 415,消息 - 服务器无法为请求提供服务,因为媒体类型不受支持。”的响应。
谁能告诉我如何解决这个不受支持的媒体问题,以便在 Java 平台上使用受 NTLM 保护的 SOAP Web 服务。使用 JCIFS 是使用 NTLM 保护服务的正确选项,还是有更好的方法。提前致谢。
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getAuthSchemes().register(AuthSchemes.NTLM,
new JCIFSNTLMSchemeFactory());
CredentialsProvider credsProvider = new BasicCredentialsProvider();
NTCredentials ntcred = new NTCredentials("USERNAME", "PASSWORD",
"HOST", "DOMAIN");
credsProvider.setCredentials(new AuthScope("HOST", 443,
AuthScope.ANY_REALM, "NTLM"), ntcred);
httpclient.setCredentialsProvider(credsProvider);
httpclient.getParams().setParameter(
CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8");
Writer writer = new StringWriter();
writer.write("MY SOAP REQUEST BODY");
HttpPost httppost = new HttpPost(
"https://<HOST_NAME>/XiPay30WS.asmx");
httppost.setEntity(new StringEntity(writer.toString()));
httppost.setHeader("Content-Type",
"application/x-www-form-urlencoded");
HttpResponse httpresponse = httpclient.execute(
new HttpHost("HOST", 443, "https"),
httppost, new BasicHttpContext());
String statusCode = httpresponse.getStatusCode();
【问题讨论】:
标签: java web-services soap axis ntlm