代码之家  ›  专栏  ›  技术社区  ›  Ben.Vineyard

如何在web服务客户端请求中配置SOAP XML名称空间?

  •  1
  • Ben.Vineyard  · 技术社区  · 15 年前

    我在调用第三方web服务时遇到问题。我有 收到SOAP错误,但我 xmlns=“”

    <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>
    
    2 回复  |  直到 15 年前
        1
  •  1
  •   Garett    15 年前

    你提出的方法似乎是最简单的方法。另一种方法是 SOAP extensions 要修改SOAP响应,请删除空的xmlns属性。你可以修改 SoapClientMessage BeforeDeserialize 第二阶段 SoapMessageStage

        2
  •  0
  •   bluish dmajkic    14 年前

    由于我没有听到任何评论或回答我的第二个问题,我将接受我遇到的答案,这是改变自动生成的Reference.cs 类的XML元素声明 System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified) System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified) .