c#调用 webservice
时间: 2023-10-07 17:13:12 浏览: 147
C#调用WebService
4星 · 用户满意度95%
在C#中调用WebService的方法有两种,静态调用和动态调用。
静态调用是指通过添加WebService的引用来调用WebService。这种方式需要先在项目中添加WebService的引用,然后通过生成的代理类来访问WebService的方法。静态调用的缺点是如果WebService的地址或者内容发生改变,就需要重新添加引用。
动态调用是指在运行时动态创建WebService的代理类来调用WebService的方法。使用动态调用的方式可以解决静态调用中的问题,无需添加引用,可以根据实际情况动态调用不同的WebService。在C#中,可以使用WebClient、HttpWebRequest或者HttpClient等类来进行动态调用WebService。
以下是使用动态调用的示例代码:
```
string url = "WebService的地址";
string methodName = "WebService的方法名";
string param1 = "参数1";
string param2 = "参数2";
// 创建HttpWebRequest对象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
// 构建SOAP消息体
string soapRequest = string.Format(
@"<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>
<{0} xmlns=""http://tempuri.org/"">
<param1>{1}</param1>
<param2>{2}</param2>
</{0}>
</soap:Body>
</soap:Envelope>", methodName, param1, param2);
byte[] requestData = Encoding.UTF8.GetBytes(soapRequest);
request.ContentLength = requestData.Length;
// 发送请求并获取响应
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(requestData, 0, requestData.Length);
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
// 读取响应内容
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseXml = reader.ReadToEnd();
// 解析响应内容,获取结果
// ...
}
}
```
通过以上的代码,你可以根据实际情况动态调用WebService的方法,并获取到返回的结果。
阅读全文