小编Mat*_*hew的帖子

将 XML 封装在 .net 中的 SOAP 信封中

我需要帮助将 XML 包装到第三方 SOAP 服务器的 SOAP 信封中。第三方提供了入站请求和出站响应的 xsd 文件。我已经获取了这些 XSD 文件并使用 xsd 工具创建了它们的 C# 类。我的问题是我需要用 SOAP 信封包装序列化请求,但我不知道从哪里开始。我正在查看 Microsoft Web Service Improvements 3,但这表明它仅适用于 .net 2.0 和 VS2005。我正在使用 VS2012 和 .net 4.5。另外,我研究过通过 Web 服务连接到服务器,但它似乎不兼容并且没有 WSDL

以下是 SOAP 服务器期望入站请求的示例。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<soap:Body>
<GetBasicData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="CRS610MI">
<CONO xmlns="">1</CONO>
<CUNO xmlns="">12345</CUNO>
</GetBasicData>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

这就是序列化 XML 字符串的样子。

<?xml version="1.0" encoding="utf-8"?>
<GetBasicData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="CRS610MI">
<CONO xmlns="">1</CONO>
<CUNO xmlns="">12345</CUNO>
</GetBasicData>
Run Code Online (Sandbox Code Playgroud)

我用于网络请求和响应的代码。

Byte[] byteArray = System.Text.UTF8Encoding.UTF8.GetBytes(data);

WebRequest webRequest = WebRequest.Create(@"http://myserver:8888"); …
Run Code Online (Sandbox Code Playgroud)

c# xml serialization soap web-services

5
推荐指数
1
解决办法
4万
查看次数

标签 统计

c# ×1

serialization ×1

soap ×1

web-services ×1

xml ×1