调用javaweb服务“rest”,它需要使用用户名和密码以及来自.netc的证书进行身份验证#

b4wnujal  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(376)

好的,这是我的故事,我有来自第三方的javaweb服务,我必须用c连接到这个服务,这个服务需要
使用用户名和密码进行身份验证。
使用密码从客户机“keystore.jks”(java密钥库文件)发送证书。
我的问题是这个服务的供应商没有为这个服务提供wsdl链接,证书文件是java密钥库,我挂了2天,在网上搜索这个没有运气
因此:我使用soapui软件来调用这个服务,它工作得很好
我想要的是,是否可以在不向供应商请求wsdl的情况下使用此服务?如果是,怎么做?
任何帮助都将受到感激。提前谢谢。
编辑:服务url likehttps://10.111.10.12/ropnrs/person?crn=1234567 它是不可访问的抛出网页浏览器返回403禁止

bogh5gae

bogh5gae1#

您可以通过使用webclient发送post请求并用soapxml消息填充请求体来使用没有wsdl的webservice。
您可能需要添加额外的http头。首先用soapui做一个请求,然后用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中的类。

相关问题