好的,这是我的故事,我有来自第三方的java web服务我必须使用C#连接到这个服务 此服务需要以下
我的问题是这个服务的供应商没有提供服务的WSDL链接,证书文件是java密钥库我在这上面挂了2天并在网上搜索这个没有运气
因此:我使用SOAPUI软件来调用此服务并且运行良好
我想要的是, 是否可以在不向供应商请求WSDL的情况下使用此服务?如果是的话怎么样?
任何帮助都很值得赞赏。 提前谢谢。
修改 服务网址,如https://10.111.10.12/ropnrs/Person?crn=1234567 并且它无法访问throw web浏览器返回403 forbidden
答案 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的类。