C#通过HttpWebRequest调用WebService并获取返回数据

4星 · 超过85%的资源 需积分: 34 153 下载量 103 浏览量 更新于2024-09-16 收藏 1KB TXT 举报
在C#编程中,利用HttpWebRequest类调用Web服务(Webservice)是一种常见的网络通信方式,特别是在需要与XML-RPC或SOAP服务进行交互时。以下是一个详细的步骤演示如何通过HttpWebRequest实现从一个URL调用Web服务方法,并处理返回的数据。 首先,我们来看`GetWebMethodReturn`函数的核心部分。这个函数的主要目的是构造SOAP消息体,因为Web服务通常使用SOAP(简单对象访问协议)作为数据交换格式。它接收三个参数: 1. `url`:这是Web服务的URL地址,用于发起请求。 2. `methodName`:要调用的服务方法名称,每个Web服务都有特定的方法名来执行特定的操作。 3. `parms`:包含传递给服务方法的参数,这可以是XML字符串或者其他格式的数据。 函数开始创建一个StringBuilder,用于构建SOAP消息。首先添加XML声明,定义命名空间和版本信息。然后,创建SOAP Envelope、Body,并嵌套指定的Web服务方法调用。这里的方法名前加上了命名空间("http://tempuri.org/"),表明这是要调用的服务接口。接下来,将`parms`字符串插入到方法调用部分,表示传递的实际参数。 接下来,将构造好的SOAP消息转换为字节数组(byte[]),以便通过HTTP POST请求发送。创建一个HttpWebRequest对象,设置其方法为"POST",因为Web服务通常使用POST请求来提交数据。同时,设置Content-Type为"application/soap+xml;charset=utf-8",明确告诉服务器我们正在发送的是SOAP XML格式的数据。 然后,使用`GetRequestStream()`方法获取请求流,并将构建的字节数组写入流中。这意味着数据已经成功发送到了Web服务端。 最后,为了接收服务器的响应,创建一个HttpWebResponse对象,并将其保存在`myResponse`变量中。使用`GetResponseStream()`方法获取响应流,读取返回的数据并将其转换为字符串,存储在`responseString`变量中。这将是服务方法执行后返回的结果。 总结来说,这个C#示例展示了如何使用HttpWebRequest来调用Web服务的方法,并处理返回的数据。它涉及到了XML消息格式的构造、HTTP请求的设置以及服务器响应的解析。掌握这个技术对于开发需要与外部系统交互的C#应用程序至关重要。