答案:C#处理SOAP协议主要通过WCF自动生成客户端或手动构造XML报文。1. 推荐使用“添加服务引用”根据WSDL生成代理类,自动完成序列化;2. 需精细控制时可手动构建SOAP请求,利用HttpWebRequest发送并解析响应;3. 使用XmlDocument或XDocument操作报文内容,注意命名空间匹配;4. 可配置messageLogging记录日志,便于调试实际传输的SOAP消息。

C# 处理 SOAP 协议中的 XML 报文,通常用于调用 Web Service 接口。SOAP 是基于 XML 的通信协议,C# 提供了多种方式来处理这些报文,无论是自动封装还是手动解析发送。以下是几种常用方法和关键点说明。
这是最常见且推荐的方式,适用于标准的 ASMX 或 WCF Web Service。
例如:
var client = new ServiceReference1.MyServiceClient(); var response = client.GetData(123); // 自动处理 SOAP 封装
当需要精细控制报文内容(如添加 Header、兼容老旧接口),可手动构建 SOAP 请求。
text/xml; charset=utf-8,SOAPAction 正确指向目标操作。示例代码片段:
string soapRequest = @"<?xml version='1.0' encoding='utf-8'?>
<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
<soap:Body>
<GetData xmlns='http://tempuri.org/'>
<id>123</id>
</GetData>
</soap:Body>
</soap:Envelope>";
<p>var request = (HttpWebRequest)WebRequest.Create("<a href="https://www.php.cn/link/955fda27a2b8c63b1a738968656ce939">https://www.php.cn/link/955fda27a2b8c63b1a738968656ce939</a>");
request.Method = "POST";
request.ContentType = "text/xml; charset=utf-8";
request.Headers.Add("SOAPAction", "<a href="https://www.php.cn/link/1b159dc50cad7253d6c91bc03c2bf33c">https://www.php.cn/link/1b159dc50cad7253d6c91bc03c2bf33c</a>");</p><p>using (var stream = request.GetRequestStream())
{
byte[] bytes = Encoding.UTF8.GetBytes(soapRequest);
stream.Write(bytes, 0, bytes.Length);
}</p><p>using (var response = (HttpWebResponse)request.GetResponse())
using (var reader = new StreamReader(response.GetResponseStream()))
{
string resultXml = reader.ReadToEnd();
// 使用 XmlDocument 或 XDocument 解析 resultXml
}
在构造或解析 SOAP 响应时,常配合 XML 操作类。
例如提取响应中的某个字段:
XDocument doc = XDocument.Parse(resultXml); XNamespace ns = "http://tempuri.org/"; var value = doc.Descendants(ns + "GetDataResult").FirstOrDefault()?.Value;
开发过程中若需查看实际发送/接收的 XML,可开启 WCF 跟踪。
基本上就这些。根据项目需求选择合适方式:大多数情况推荐自动生成客户端;特殊场景再手动处理 XML。关键是理解 SOAP 结构和命名空间的作用。
以上就是C# 如何处理soap协议中的xml报文的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号