Знатокам дотнетов и мыла (SOAP)
Добавлено: 24 мар 2006, 16:42
Наткнулся сегодня на странную фичу.
Есть вебсервис, написанный на Java (Tomcat/XFire), я пробую его позвать из C#. Всё чудесно, кроме одного единственного случая: у сервиса есть метод echo, который принимает и возвращает тип Object. При попытке вызвать этот метод, передав, скажем, строку, сервер ругается на отсутствие у параметра аттрибута xsi:type. Посмотрев анализатором запрос SOAP убеждаемся, что это действительно так:
<in0>A string</in0>
Складывается впечатление, что для параметров, описанных в WSDL как anyType, .NET почему-то опускает аттрибут xsi:type - вместо того, чтобы указать фактический тип передаваемого параметра. Серверу, понятно, это не нравится. Сам сервер результаты типа Object (в WSDL - anyType) этот аттрибут выставляет как надо. Например, так:
<out xsi:type="xsd:string">Forty-Two</out>
Вопрос: это так и надо (т.е. в морг) или в консерватории (ServiceProxy, whatever) можно что-нибудь подправить?
Есть вебсервис, написанный на Java (Tomcat/XFire), я пробую его позвать из C#. Всё чудесно, кроме одного единственного случая: у сервиса есть метод echo, который принимает и возвращает тип Object. При попытке вызвать этот метод, передав, скажем, строку, сервер ругается на отсутствие у параметра аттрибута xsi:type. Посмотрев анализатором запрос SOAP убеждаемся, что это действительно так:
<in0>A string</in0>
Складывается впечатление, что для параметров, описанных в WSDL как anyType, .NET почему-то опускает аттрибут xsi:type - вместо того, чтобы указать фактический тип передаваемого параметра. Серверу, понятно, это не нравится. Сам сервер результаты типа Object (в WSDL - anyType) этот аттрибут выставляет как надо. Например, так:
<out xsi:type="xsd:string">Forty-Two</out>
