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

时间:2010-10-14 18:58:11

标签: c# .net client java-ws

我有一个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));

我将不胜感激。

2 个答案:

答案 0 :(得分:2)

长话短说 我必须解决的两个问题,

  1. HTTP状态401 - 此请求 需要HTTP身份验证()

      

    在app.config

    中VS生成的customeBinding中将身份验证架构更改为Basic
  2. HTTP / 1.1 505 HTTP版本没有 支持的

      

    删除 Expect:100-continue SOAP标头。添加此行ServicePointManager.Expect100Continue = false;。有关问题的详细信息,转到此处

  3. 这里的长篇故事http://www.irasenthil.com/2010/10/wcf-client-to-java-web-service.html

答案 1 :(得分:0)

似乎Java WS需要存储在几个密钥库中的服务器和根证书。它需要知道这些密钥库的密码才能获得证书,这些证书似乎可以在jsseKeyStorePasswordjsseTrustStorePassword变量中使用。

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