.Net, вызывающая Java Webservice, мне нужно преобразовать XMLSchema / long в anXMLSoap / long - PullRequest
0 голосов
/ 29 сентября 2011

Я использую C # с .net 4 и пытаюсь использовать веб-сервис Java. Мой код был автоматически сгенерирован путем добавления ссылки на веб-сервис в стиле .net 2.0. Я полагаю, что существует проблема с типами .net, отправляющими в веб-сервис java, вот исключение, которое я получаю, когда пытаюсь подключиться:

Internal Server Error (deserialization error: deserialization error: unexpected element type: expected={http://schemas.xmlsoap.org/soap/encoding/}long, actual={http://www.w3.org/2001/XMLSchema}long)

Старая документация от веб-сервиса: При сериализации объектов в сообщениях SOAP платформа Microsoft .NET отображает все примитивы в W3C XML типы схем. Это в сочетании с неспособностью платформ .NET отличать примитивы от примитивов. обертки (через автобокс) вызывают проблему взаимодействия с веб-сервисами Sun One при использовании закодированные сообщения RPC SOAP. В языке программирования Java примитивы и их эквивалентные объектные оболочки не могут быть автоматически упакованы таким образом дифференцируются в языке. Когда веб-службы создаются и развертываются в Sun One, WSDL на стороне сервера отображает Java примитивы к типу схемы W3C и сопоставляют объекты Java с типом схемы SOAP.

Кто-нибудь знает, как я могу сказать .net отправить http://schemas.xmlsoap.org/soap/encoding/}long вместо http://www.w3.org/2001/XMLSchema}long?

Спасибо! AFrieze

1 Ответ

0 голосов
/ 29 сентября 2011

Предлагаем попробовать изменить стиль на Document.Таким образом, при создании wsdl вы найдете раздел <type></type>, в котором перечислены все типы данных, используемые сервисом.В этом разделе также будет присутствовать элемент namespace, который, по сути, вызывает у вас проблему прямо сейчас, но не очевиден, потому что в стиле обслуживания RPC wsdl не содержит раздел для типов.Я предполагаю, что encoding - это literal.

edit:

Сначала я должен был догадаться, но, похоже, ваш сервис использует типы encoded вместо literal.Особенность кодированных сервисов заключается в том, что они всегда подвержены проблемам взаимодействия.Моя рекомендация: не используйте rpc / encoded - используйте Document / Literal.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...