调用java web服务“REST”,需要使用username&的auth来自.Net C的密码和证书#

时间:2015-01-15 06:03:21

标签: java c# web-services wsdl

好的,这是我的故事,我有来自第三方的java web服务我必须使用C#连接到这个服务 此服务需要以下

  • 使用用户名和身份验证进行身份验证密码。
  • 证书从客户端“keystore.jks”(Java密钥库文件)发送,密码为。

我的问题是这个服务的供应商没有提供服务的WSDL链接,证书文件是java密钥库我在这上面挂了2天并在网上搜索这个没有运气

因此:我使用SOAPUI软件来调用此服务并且运行良好

我想要的是, 是否可以在不向供应商请求WSDL的情况下使用此服务?如果是的话怎么样?

任何帮助都很值得赞赏。 提前谢谢。

修改 服务网址,如https://10.111.10.12/ropnrs/Person?crn=1234567 并且它无法访问throw web浏览器返回403 forbidden

1 个答案:

答案 0 :(得分:1)

您可以通过使用WebClient发送POST请求并使用SOAP XML消息填充请求正文来使用没有WSDL的Web服务。

您可能需要添加其他HTTP标头。首先使用SOAP UI执行请求,然后使用fiddler查看请求。然后使用WebClient发送请求。代码应该类似于:

using (var client = new WebClient())
{
    // this is the string containing the soap message
    var data = File.ReadAllText("request.xml");
    // HTTP header. set it to the identical working example you monitor with fiddler from SOAP UI
    client.Headers.Add("Content-Type", "text/xml;charset=utf-8");
    // HTTP header. set it to the identical working example you monitor with fiddler from SOAP UI 
    client.Headers.Add("SOAPAction", "\"http://tempuri.org/ITestWcfService/TestMethod\"");
    // add/modify additional HTTP headers to make the request identical with what you get when calling from SOAP UI on a successful call 
    try
    {
        var response = client.UploadString("http://localhost:8080/TestWcfService", data);
    }
    catch (Exception e)
    {
        // handle exception                        
    }
}

我不确定证书,但也许您可以以某种方式将其设置为Web客户端。不幸的是,我对客户端证书了解不多。但如果你能在评论中解释我可以帮助你。如果您设法使用此解决方案,请在此处发布您的其他工作以处理证书问题。

WebClient是System.dll程序集中System.Net的类。