Читать SOAP XML с помощью функции веб-службы ASMX - PullRequest
1 голос
/ 14 февраля 2012

Я написал простую функцию веб-службы (ASMX) в VB:

Public Function processMessage(ByVal Messages as XMLElement) As String  
    Dim strS as string
    strS = Messages.outerXML
    Return strS
End Function  

И протестировал, отправив следующий запрос (попытка прочитать два сообщения):

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:urn="urn:gps-hex-communicator">
    <soap:Header/>
    <soap:Body>
        <processMessage xmlns="urn:gps-hex-communicator">
            <Messages>
                <Message>
                    <DeviceID>11A</DeviceID>
                    <MessageID>1111B</MessageID>
                </Message>    
                <Message>
                    <DeviceID>22A</DeviceID>
                    <MessageID>2222B<MessageID>
                </Message>
            </Messages>
        </processMessage>
    </soap:Body>
</soap:Envelope>

Иполучить следующий ответ:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <processMessageResponse xmlns="urn:gps-hex-communicator">
            <processMessageResult><![CDATA[<Message xmlns="urn:gps-hex-communicator">
                <DeviceID>11A</DeviceID>
                <MessageID>1111B</MessageID>
                </Message>]]></processMessageResult>
            </processMessageResponse>
    </soap:Body>
</soap:Envelope>

Проблема в том, что он останавливается после прочтения первого сообщения, а второе никогда не появляется.Как я могу получить это?

Ответы [ 2 ]

0 голосов
/ 23 февраля 2012

Спасибо всем. Я получил ответ сейчас. XmlAnyElementAttribute помогает получить все. Итак, первая строка функции asmx должна быть:

Public Function processMessage(<XmlAnyElementAttribute()> ByVal Messages as XmlElement) As String   
0 голосов
/ 14 февраля 2012

Во втором сообщении у вас сломан тег

<MessageID>2222B<MessageID>

должно быть

 <MessageID>2222B</MessageID>
...