c# - 如何在 Web 服务客户端请求中配置 SOAP XML 命名空间?

标签 c# xml web-services soap namespaces

我在调用第 3 方网络服务时遇到问题。我没有收到 SOAP 错误,但没有得到有效的结果集。我的一个同事在 OS400 上用 RPG 编写了一个客户端,它返回了一个有效的结果集。当比较 Fiddler2 中两个请求的 RAW 请求时,我注意到的唯一明显区别是我的 c# 客户端具有 的 SOAP xml 元素。 xmlns=""而他的没有。是否可以删除所述空命名空间声明?请参阅下面引用的 SOAP 请求:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <SendArchitectServiceRequest xmlns="archserver.xsd.dataflux.com">
            <serviceName xmlns="">AddressVerify.dmc</serviceName>
            <fieldDefinitions xmlns="">
                <fieldName>AddressLine_1</fieldName>
                <fieldType>STRING</fieldType>
                <fieldLength>255</fieldLength>
            </fieldDefinitions>
            <fieldDefinitions xmlns="">
                <fieldName>AddressLine_2</fieldName>
                <fieldType>STRING</fieldType>
                <fieldLength>255</fieldLength>
            </fieldDefinitions>
            <fieldDefinitions xmlns="">
                <fieldName>City_in</fieldName>
                <fieldType>STRING</fieldType>
                <fieldLength>255</fieldLength>
            </fieldDefinitions>
            <fieldDefinitions xmlns="">
                <fieldName>State_in</fieldName>
                <fieldType>STRING</fieldType>
                <fieldLength>255</fieldLength>
            </fieldDefinitions>
            <fieldDefinitions xmlns="">
                <fieldName>Zip</fieldName>
                <fieldType>STRING</fieldType>
                <fieldLength>255</fieldLength>
            </fieldDefinitions>
            <fieldDefinitions xmlns="">
                <fieldName>Country</fieldName>
                <fieldType>STRING</fieldType>
                <fieldLength>255</fieldLength>
            </fieldDefinitions>
            <dataRows xmlns="">
                <value>3485 W. Harmon Ave.</value>
                <value/>
                <value>Las Vegas</value>
                <value>NV</value>
                <value>89103</value>
                <value>United States</value>
                <reserved>0</reserved>
            </dataRows>
        </SendArchitectServiceRequest>
    </s:Body>
</s:Envelope>

最佳答案

您提出的方法似乎是最简单的方法。另一种方法是使用 SOAP extensions修改 SOAP 响应,删除空的 xmlns 属性。您将修改 SoapClientMessageBeforeDeserialize SoapMessageStage的舞台.

关于c# - 如何在 Web 服务客户端请求中配置 SOAP XML 命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3514567/

相关文章:

python - 如何在整个目录中查找具有特定扩展名的文件,然后复制到另一台服务器

c# - Mono:Webservice 在 XML 中添加 UTF-8 BOM

android - 连接到网络服务后无法打开图库

java - 在 Java 8 中模仿 C# 操作

javascript - 如何让 onclick 在 javascript 返回 false 时触发

c# - Metro - 编写异步 c# 操作并从 javascript 调用

c# - WebMethod 在参数中接收 null

c# - 无法在 VS 2022 Enterprise 版本 17.0.0 中编译 Azure Function v4 进程外

java - Jackson 没有大写 XML 元素

java - pd4ml 的 Maven 依赖项