![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Grig |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: нет Всего: 16 |
Здравствуйте, товарищи!
Я на Яве написал веб-сервис. ява-клиенты понимают его нормально. А вот на C# не могут его подключить(по wsdl) Хотелось бы найти какой-нибудь примерчик по созданию клиента с подключением к wsdl. Так как сам я в С# ни бум-бум. -------------------- |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Не работает или не знаете, как подключить? Если второе, то в гугл: http://www.google.ru/search?aq=f&compl...1%D0%BA&lr= А если не работает, хотелось бы увидеть wsdl файл. |
|||
|
||||
Grig |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: нет Всего: 16 |
немного разобрался, и вот с какой бедой столкнулся:
1. Написал сервис на Java Main.java
DistWay.java
server-config.wsdd
в результате получаем wsdl:
Теперь пытаюсь создать клиента на C# Project -> Add Web Reference ввожу wsdl http://localhost:8001/services/Main?wsdl подключаю: UnitTest1.cs
с простым типом данных все нормально, а при попытки вызова функции getDistWay(); возвращается null Люди, подскажите, что не так делаю? -------------------- |
||||||||||
|
|||||||||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Вроде бы все правильно сделано, и wsdl сгенерирован корректный.
Вот перехватить бы Request и Response при вызове s.GetDistWay... может, там скрывается ответ. Это сообщение отредактировал(а) Idsa - 22.7.2008, 08:47 |
|||
|
||||
Grig |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: нет Всего: 16 |
а как их можно перехватить в VS 2005? пробовал отладчиком -- не получилось..
-------------------- |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Grig, отладчиком-то точно не получится. Думаю, любой снифер справится с этой задачей.
|
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
ну почему же, можно через SoapExtension получить всю подноготную запросов ответов можно ещё руками в reference.cs снять атрибут DebuggerStepThrough, чтобы посмотреть, как заполняются свойства (в данном случае это почти бесполезно) но снифером удобней и быстрее, да |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
||||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
не, SoapExtension к клиенту прикручивается
в моём рабочем проекте так реализована аутентификация soap-сообщений |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Вроде бы все-таки можно цеплять SoapExtension к клиентской части сервиса... только я никак не могу найти соответствующего примера.
|
|||
|
||||
Grig |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: нет Всего: 16 |
йе!в снифере получил xml следующего вида:
однако при подключении в C#
возвращается массив пустых классов ((( Что тут можно сделать? Добавлено через 2 минуты и 37 секунд Снифер использую HTTP Analyzer 3.2.1 Это кому интересно, хорошая вещь) -------------------- |
||||
|
|||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Grig, я смотрю, Вы уже другой метод тестируете. Тот метод был более подходящим. Во-первых, он возвращал данные статически. Во-вторых, там был не массив, значит анализировать легче.
Сейчас сделайте следующее: 1. Сбилдете сервис на Java 2. Создайте новый Web Reference в .NET 3. Попытайтесь обратиться к GetDistWay 4. Запостите логи снифера по этому запросу. mihryak, наши с тобой сообщения разошлись в минуту - я не видел твое, когда писал свое ![]() |
|||
|
||||
Grig |
|
||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: нет Всего: 16 |
Немного модифицировал Ява-код, теперь он состоит из главного, подчиненного класса и класса-перемычки. О как. иначе не передает.
Main.java
DistWay.java
DistUtils.java
server-config.wsdd
wsdl получается вот такой вот:
создаю Web Reference в .NET Обращаюсь:
снифер пишет -- все путем:
а вот объект s.getDistWay(); возвращает нулевой объект ( -------------------- |
||||||||||||||
|
|||||||||||||||
mihryak |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
простите за уход в оффтоп..
прикручивается, например, в апп.конфиге приложения
|
||||
|
|||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Плохо, конечно, что мы в одном топике обсуждаем две темы... но что уж поделаешь
![]() mihryak, насчет прикручивания я читал... я не пойму, что дальше делать. |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Grig, я нашел интересные доки как раз по теме совмещения сервисов Java и .NET: 1 часть, 2 часть, 3 часть.
Очень полезные статьи, правда подходящего на 100% примера я там не нашел. Еще можно воспользоваться утилитой SoapUi: http://www.soapui.org/ (не Pro-версия бесплатная). Я ее ни разу не юзал, но вроде как она должна подсказать, есть ли неточности в WSDL сервиса. Как крайняя мера, можно создать такой же сервис на .NET (с таким же возвращаемым значением и именами параметров) и посмотреть, какой wsdl сгенерирует .NET, а потом сравнить с тем, что сгенерировала Java. Это сообщение отредактировал(а) Idsa - 22.7.2008, 14:44 |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
Idsa, здесь написал про расширения
|
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
mihryak, честно говоря, я все это находил в интернете. Я просто не думал, что все автоматически происходит. Получается, сгенерированный студией прокси-класс сам считывает из Web.config'а расширения и вызывает их метода?
Добавлено через 5 минут и 26 секунд mihryak, здесь поставил плюс ![]() Спасибо за информацию. |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
||||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Так. Офтопный вопрос решили... остался главный
![]() Grig, есть какие-нибудь новости по поводу SoapUI и сравнения wsdl Java и .NET? |
|||
|
||||
Grig |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: нет Всего: 16 |
Idsa, и все-все-все! Завтра продолжим, не теряйте =)
-------------------- |
|||
|
||||
Grig |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: нет Всего: 16 |
Создал в .Net аналогичный веб-сервис на J#:
и вот его wsdl: http://localhost:2872/WebSite4/Service.asmx?wsdl
все это и подключается и работает замечательно. С wsdl сгенерированным Java2WSDL отличается в основном в блоке <wsdl:types>:
JavaWSDL в этом плане выглядит более куцо. в программе SOAPUi поглядел Request того и другого WSDL. Они абсолютно идентичны. Вывод напрашивается хочешь не хочешь, а придеться как-нибудь Явой генерить похожий wsdl. Так ведь понимаю? Может есть еще другие пути решения проблемы? -------------------- |
||||||
|
|||||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Стандарты веб-сервисов не сразу строились... поэтому, если та утилита, которую Вы используете в Java, генерирует wsdl по старому стандарту, ничего хорошего от нее ждать не стоит. Можно попробовать найти более новую версию генератора. Кстати можно попробовать подменить wsdl в явовском сервисе на тот, который сгенерировала .net'овская утилита. В той статье, ссылку на которую я указывал выше (в первой части), говорится, что в идеале wsdl нужно писать ручками. Причем wsdl нужно писать до написания самого сервиса (опять же, в идеале). В этом определенно есть смысл... но для этого нужно провести не один рабочий день, тщательно изучая стандарт. Если же идти по пути эникейщика (что, собственно, 99.999% программистов и делают), то нужно просто искать утилиты, которые будут генерировать совместимый wsdl. |
|||
|
||||
Grig |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: нет Всего: 16 |
буду дальше пытаться. спасибо за помощь!
-------------------- |
|||
|
||||
Grig |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: нет Всего: 16 |
Все решилось довольно просто: в файле развертывания wsdd надо прописать на только классы, но и сложные типы данных вроде массивов.
Хоть это и не имеет отношение к .Net, публикую здесь вдруг кому понадобиться: server-config.wsdd
-------------------- |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |