Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Работа с Web service'ом через С++ |
Автор: Brodyaga 12.11.2008, 08:13 |
Всем доброго времени суток! Есть WebService работающий на C#.. Подскажите пожалуйста, как мне использовать его через C++ : |
Автор: Brodyaga 12.11.2008, 18:05 |
Покопал немного под это дело... Это нужно через протокол SOAP с ним общаца... Кто-нибудь знает есть ли какиенить стандартные средства в си для взаимодействия с SOAP?? не в ручную же xml составлять.... |
Автор: Fazil6 12.11.2008, 18:23 |
составлять xml вручную особой проблемой не является. набери в MSDN ATL SOAP получишь кучу документации с примерами |
Автор: Vyacheslav 12.11.2008, 18:25 |
http://gsoap2.sourceforge.net/ Все элементарно и просто. Имел опыт разработки клиента под WebService (C#) для Windows и Linux |
Автор: Brodyaga 13.11.2008, 08:00 |
Vyacheslav, можете примерчик скинуть простейшего обращения к сервису, вызова метода и получения от него ответа с использованием gsoap? |
Автор: Brodyaga 13.11.2008, 15:31 | ||
Нашёл в инете несколько способов работы с Soap через C++.. Выбрал способ через библиотеку MSSOAP1.dll . Столкнулся с проблемой передачи функции параметра.
Функция специально была создана для тестов на сервисе написанном на C#. Принимает строку типа string и возвращает строку типа string. Но в данном случае она вообще не возвращает объект element... Пробовал с аналогичной функцией, но принимающей параметр типа long. С ней этот код работает... Тоесть получается что не работает только с функцией принимающей String... Помогите пожалуйста кто реализовывал чтонить подобное... Как передать через SOAP веб сервису в функцию параметр типа String ??? |
Автор: Lycifer 14.11.2008, 11:01 |
Если у тебя window то поможе ком объект(я не помню как класс называется, он умеет загружать збокри DotNet вот только не строгая сигнатура...) Если ты романтик + к этому хочеш добится великой совместности сокеты помогут , но вот только "секса будет много " - что бы подержать самому Web Service. Есть еще вариант что вызывай через C# а управление передовай в С++ (.Net call native code). Самый легкий способ это использовать С++ Manager(но примоложение больше по размерам и какое то не то, в отличии от C#, хотя считается лучше поддержка С++ unmanager, кажется Manager был зделан для этого) Это все, пиши есчё))))))))))))) |
Автор: Brodyaga 14.11.2008, 11:21 | ||||
Покопал глубже и понял что косяк в том, что параметры в методы вызывемые на веб сервисе вообще не передаюца!!! Использую тот же код, параметр в нём передаёца вот здесь... :
Вот код метода который принимает параметр на веб сервисе:
вообщем a = null, хотя параметр то я передаю!! И имя у него такое же указываю, тобишь "a"... Если сделать функцию принимающую параметры типа int, то будет тоже самое, принимаемое значение будет равно 0. Тоесть чтобы я ни передавал, в функцию на сервис параметры не доходят... Подскажите в чём дело кто знает, плиз?? :( |
Автор: jonie 16.11.2008, 14:38 |
http://www.rsdn.ru/article/xml/soapatl.xml http://www.rsdn.ru/article/xml/soap.xml почитайте |
Автор: Brodyaga 17.11.2008, 01:16 |
Прочитал.. но не нашёл где там сказано про использование MSSOAP1.dll.. Меня интересует почему проблема в коде, который приводят в различных примерах как работающий, а на деле он не работает... |
Автор: Brodyaga 17.11.2008, 11:43 | ||||||||
Вообщем так... сделал обращение к веб-сервису своему, через Builder. Та же проблема.... Нашёл одну ооочень интересную http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=351681&pg=1... Там у человека та же проблема, но при работе с веб-сервисом через Delphi... Там проблема решилась добалением строчки:
Добавил в проекте билдеровском аналогичную строку:
И всё заработало... Прочитал гдето, что эта строчка, переключает использование по умолчанию rpc на soap... Что то типа того... Но мне надо всё это провернуть на MSVC 2005... Как мне сделать аналогичную вещь в студии? Привожу на всякий случай запрос от билдера после добавления заветной строчки ![]()
Неужели никто не сталкивался с такой проблемой?! не верю! ![]() форуме одном нашёл сообщения с такой же проблемой от 2006 г., правда там тоже никто не ответил... ;) Подскажите плиз как всётаки с библиотекой MSSOAP1.dll совладать... Кстати... Нашёл ещё одну библиотечку... вот http://www.codeproject.com/KB/COM/xysoapclient.aspx?display=PrintAll&fid=13980&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=26 Но она тоже не работает, тут уж совсем.. даже объект почемуто по CreateInstance не создаётся, тоесть вот здесь уже косяк:
pSoapClient остаётся равным null... вот кстати http://www.codeproject.com/KB/XML/vcsoapclient.aspx на пример, который за основу взял я... и в котором соответственно нужно что-то поправить аналогичное исправленному в билдере... Ну что форумчане... жду ваших высказываний и помощи... |
Автор: jonie 17.11.2008, 22:28 | ||||
|
Автор: Brodyaga 18.11.2008, 08:12 | ||
зарегина имеется ввиду утилитой regsrv ? |
Автор: Brodyaga 19.11.2008, 08:31 | ||||
Да, действително... зарегал, видать выдало какуюто ошибку, а я посчитал что всё ок... библиотека действительно не была зарегана. Сейчас зарегал по новой... теперь класс не правильно инициализируется. Вот тут функция InitService возвращает 0 :
В чём сейчас проблема? кто знает? |
Автор: Brodyaga 22.11.2008, 16:18 |
Ну что никто не знает? подскажите ктонить, сильно надо :( |