C# 通过模拟http请求来调用soap、wsdl

本文介绍了如何使用C#通过模拟HTTP请求来调用SOAP和WSDL服务,以解决与Java远程API的兼容性问题。通过分析请求数据并抓包,然后使用HTTP POST方法实现调用。提供了相关工具下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

C#调用webservice的方法很多,我说的这种通过http请求模拟来调用的方式是为了解决C#调用java的远程API出现各种不兼容问题。

由于远程API不在我们的控制下,我们只能修改本地的调用代码来适应远程API。

在以上情况下,我们就通过模拟http请求来去调用webservice。

 

首先,我们要分析调用端口时,我们发送出去的数据。

先抓个包看看,这里,我们没有办法用Fiddler来监听SOAP协议的内容,但是SOAP还是基于http协议的。

用更底层的工具是能够抓到的。这里可以去百度一下,工具很多。

不过我找了一个java写的,监听SOAP协议的小工具。《戳我下载》http://download.youkuaiyun.com/detail/a406502972/9460758

抓到包了之后,直接post就行了,简单易懂,直接上代码:

 1         static string data = @"发送的内容";
 2         private static string contentType = "text/xml; charset=UTF-8";
 3         
C#中,如果你想要通过HTTP发送SOAP请求,你可以使用.NET Framework自带的System.Web.Services命名空间,特别是ServiceReference类以及WebServiceClient类。以下是基本步骤: 1. **创建服务引用**: 首先,你需要创建一个WebService引用,这会自动生成客户端代理类,用于调用远程服务。打开Visual Studio的解决方案资源管理器,右键点击项目 -> 添加 -> Web Service Reference,然后输入URL或者选择WSDL文件。 2. **实例化客户端**: 使用`ServiceReference`里的类名称创建一个客户端实例,例如`MyWebService proxy = new MyWebService();`这里`MyWebService`是生成的服务引用名。 3. **构造SOAP消息**: 创建一个`SoapMessage`对象,可以包含SOAP请求头、主体和尾部。通常你会使用`XmlSerializer`序列化对象到XML字符串作为SOAP主体。 ```csharp string soapRequest = "<?xml version='1.0' encoding='utf-8'?><soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><MyMethod xmlns='http://yourwebservice.com'> <arg1>value1</arg1> <arg2>value2</arg2></MyMethod></soap:Body></soap:Envelope>"; ``` 这里的`MyMethod`是你要调用服务方法名,`arg1`和`arg2`是你传递的参数。 4. **发送请求并接收响应**: 调用`Invoke`方法,并将构造好的`SoapMessage`作为参数传入。这将会触发网络请求,并返回一个`SoapResponseMessage`。 ```csharp using (var message = new SoapMessage(soapRequest)) { var response = proxy.MyMethod(message); // 对response进行处理,如反序列化成所需的对象 } ``` 5. **异常处理**: 确保添加适当的错误处理,因为网络请求可能会失败。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值