Как я могу настроить пространства имен SOAP XML в запросе клиента веб-службы? - PullRequest
1 голос
/ 18 августа 2010

У меня проблемы с вызовом стороннего веб-сервиса. Я не получил ошибку SOAP, но не получил действительный набор результатов. Мой коллега написал клиент в RPG на OS400, и он возвращает действительный набор результатов. При сравнении запроса RAW в Fiddler2 для обоих запросов я заметил единственное явное различие в том, что мой клиент c # имел элементы XML SOAP с 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>

Ответы [ 2 ]

1 голос
/ 19 августа 2010

Ваш предложенный метод кажется самым простым подходом.Еще один подход заключается в использовании расширений SOAP для изменения ответа SOAP, удаляя пустой атрибут xmlns.Вы бы изменили SoapClientMessage на BeforeDeserialize этапе SoapMessageStage .

0 голосов
/ 19 августа 2010

Поскольку я не услышал ни одного комментария или ответа на свой второй вопрос, я приму ответ, с которым столкнулся, который изменял автоматически сгенерированные объявления элемента XML класса Reference.cs с System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified) на System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified).

...