Как получить сообщение контракт на отправку действия мыла в теле, а не в заголовке - PullRequest
3 голосов
/ 29 марта 2011

Когда я использую "/ messageContract" в моей команде svcutil, мое мыльное сообщение отправляет действие или операцию в заголовке конверта мыла, а не в теле.Удаленная конечная точка - это сервис Java на основе поставщика, который я не могу контролировать.

Мне нужно, чтобы действие было отправлено в теле, но я все еще использую "/ messageContract".

Кто-нибудь знает, как этого добиться?

SOAP-конверт WITH"/ messageContract"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">GetCapabilities</Action>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"></s:Body>
</s:Envelope>

SOAP-конверт БЕЗ"/ messageContract"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header></s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<GetCapabilities xmlns="http://www.opengis.net/cat/csw/2.0.2"></GetCapabilities>
</s:Body>
</s:Envelope>

Моя команда svcutil:

svcutil /target:code http://localhost/sarpilot/xml/mywisdl.wsdl /messageContract /out:WebService.cs /config:WebService.config

1 Ответ

3 голосов
/ 29 марта 2011

Действительно ли ваша целевая (на основе Java) веб-служба требует элемента пространства имен на основе Microsoft в теле SOAP вместо заголовка SOAP?Это кажется поддельным для меня.

<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">GetCapabilities</Action>

Большинству веб-служб требуется только действие в заголовке HTTP , а не как часть тела SOAP:

POST /StockQuote HTTP/1.1
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "http://electrocommerce.org/abc#MyMessage"

<SOAP-ENV:Envelope...

Можете ли вы предоставить необработанные,рабочий запрос SOAP (включая заголовки HTTP) для сравнения?Вы можете протестировать его независимо от .NET, используя этот небольшой клиент на веб-странице: Простейший пример SOAP с использованием Javascript .Я предполагаю из вашей другой публикации здесь , которая показывает «рабочий» запрос, что вам действительно не нужен элемент Microsoft Action в вашем теле SOAP.

...