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));

我将不胜感激任何帮助。

4

2 回答 2

2

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

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

    在 VS 生成的 app.config 中的 customeBinding 中将身份验证架构更改为基本

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

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

长话短说http://www.irasenthil.com/2010/10/wcf-client-to-java-web-service.html

于 2010-10-19T19:40:41.180 回答
0

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

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

于 2010-10-14T19:06:52.783 回答