SOAP-клиент в C # для Java-сервера - PullRequest
2 голосов
/ 15 февраля 2012

Я работаю на клиенте C # для информационной системы моего университета под названием STAG.Он предлагает веб-сервисы, поэтому я, очевидно, хочу использовать их, потому что это может сэкономить много времени.НО уже третий день я пытаюсь заставить его работать.в настоящий момент я экспериментирую с https://stag -ws.tul.cz / ws / help / list? addr = / ws / services / rest / rozvrhy т. е. служба расписания, она предлагает WSDL, поэтому я добавилссылка на службу в VS 2010, и пусть VS создает классы и обработчики событий.

Теперь для корня проблемы: C # отправляет XML следующим образом <getRozvrhByStudent xmlns="http://stag-ws.zcu.cz/">, но сервер Java, похоже, игнорирует этот видзапрос и отправляет обратно пустой контейнер.Если я удаляю пространство имен или делаю так, как это <ns1:getRozvrhByStudent xmlns:ns1="http://stag-ws.zcu.cz/">, оно начинает работать.Поэтому я думаю, что основная проблема в том, что C # и Java имеют некоторые различия в работе с пространствами имен.Я уже пытался избавиться от всех упоминаний пространства имен stag-ws.zcu.cz в файле VS generader reference.cs, но у меня возникла проблема с тем, что C # десериализует его, ожидая namespace = "", но получает namespace = "stag-ws.zcu.CZ».Я нашел возможные решения: отредактировать WSDL (но я думаю, что с wsdl все в порядке, потому что SoapUI прекрасно работает с этим WSDL и веб-сервисом), отредактировать VS, сгенерированный reference.cs, сделать некоторый король интерфейса между мылом Java и мылом C # (поведение WCF)) или canibalize сгенерированные классы и создать свой собственный интерфейс для этого веб-сервиса.

Я был бы очень рад, если бы кто-нибудь помог мне определить, где НАСТОЯЩАЯ проблема и кто ответственен за это поведение, и помочь мне в поиске решения, потому что у меня нет опыта работы с WCF.

completereference.cs здесь: http://pastebin.com/EWzC0RFz (будьте осторожны, 2k4 строки)

...