我试图通过创建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:///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();

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐