.NET客户端调用HTTPS Java Web服务

3
我有一个HTTPS Java Web服务,我正在尝试使用.NET [.NET 2.0样式客户端/WCF客户端]访问该Web服务。我从WS得到了以下错误信息。
"HTTP状态401 - 此请求需要HTTP身份验证()。"
我如何找出这个WS具有哪种类型的安全性?除了SSL外,我有用户名和密码发送到WS,我相信这是消息身份验证的一部分。
Java客户端似乎成功通信,并且它有一些有趣的行。
        System.setProperty("javax.net.ssl.keyStorePassword", new String(jsseKeyStorePassword));
        System.setProperty("javax.net.ssl.trustStorePassword", new String(jsseTrustStorePassword));

----------------------------------------------

  BindingProvider bindingProvider = (BindingProvider) port;
        bindingProvider.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username);
        bindingProvider.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, new String(password));

我希望你能够提供帮助。


当我使用Silverlight客户端(尽管它是版本2)与Axis2 WS一起工作时,我遇到了无数的问题...要小心处理... - Aaron McIver
2个回答

2
长话短说,我需要解决两个问题:
  1. HTTP状态401 - 此请求需要HTTP身份验证()

    在app.config中的VS生成的customeBinding中更改身份验证模式为Basic。

  2. HTTP/1.1 505 HTTP版本不受支持

    移除SOAP头中的Expect: 100-continue。添加此行:ServicePointManager.Expect100Continue = false;。有关该问题的详细信息,请点击此处

长话请参考http://www.irasenthil.com/2010/10/wcf-client-to-java-web-service.html

0

看起来Java WS需要在几个密钥库中存储服务器和根证书。获取证书需要知道这些密钥库的密码,这些密码似乎可以在jsseKeyStorePasswordjsseTrustStorePassword变量中找到。

此外,为了使用Windows Communication Foundation,您应该至少使用.NET Framework 3.0。


嗯,我的意思是.NET 2.0风格的客户端或WCF客户端。 - iraSenthil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接