Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
EgorDudkin Автор Сообщений: 3 Дата регистрации: 20.06.2012 |
Здравствуйте!
Столкнулся с проблемой. Есть описание типа UserInfo с полями: 1. Имя Текст User 2. Пароль Текст Password В кусок запроса на XML <soapenv:Header/><soapenv:Body><tem:RDCard><tem:user><tec:Name>testuser</tec:Name><tec:Password>testpass123</tec:Password></tem:user><tem:card> ...... Есть метод GetCard Структура пакета запроса которого Тип -------- Пользователь UserInfo user ТекстОтметки Текст textOtm Вызываю через: o=CREATEOBJECT("MSSoap.SoapClient30") o.MSSoapInit("http://..... .svc?wsdl") tt=o.GetCard('testuser','testpass123','Поисковая строка') В результате ошибка. ...Expecting state 'Element',,Encountered 'Text' with name", namespace".'. Please see InnerException... Я так понимаю, что не верно передаю параметры UserInfo. Пробовал загнать в массив, не помогло. Прошу подскажите кто сталкивался с подобными вопросами, где рыть? Как передать параметром структуру типа UserInfo? |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Soap Toolkit напрямую не поддерживает ничего кроме примитивных типов. Особенно в плане "создать и послать" (т.к. при приёме хотя-бы получаем XML-DOM из которого можно сравнительно просто извлечь отдельные свойства). Оперировать же его "расширенными интерфейсами" из фокса - не видел таких примеров, и не советую заморачиваться. Благо есть другие варианты.
Почитай тут www.code-magazine.com ------------------ WBR, Igor |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
EgorDudkin Автор Сообщений: 3 Дата регистрации: 20.06.2012 |
Да, все сложнее чем я думал... Спасибо за наводку! Буду копать дальше. ))) |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
Димон71 Сообщений: 80 Дата регистрации: 08.02.2005 |
Вот так заработает 99%
tt=o.GetCard('<soapenv:Header/><soapenv:Body><tem:RDCard><tem:user><tec:Name>testuser</tec:Name><tec:Password>testpass123</tec:Password></tem:user><tem:card>') Ты должен передать подготовленный XML в формате требуемым WSDL. Фокс сам это не делает. Може есть какие то объекты специальные для этого я не заморачивался. Смотри формат запроса WSDL и пиши ручками XML запрос и все заработает. |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
В общем и целом ДА, только не нужно при этом использовать MSSoap.SoapClient30 - это корявый и малоочевидный хак.
Берём любой HTTP транспорт (например MSXML2.XMLHTTP) и полностью soap пакет формируем, отсылаем, принимаем ответ... Если уж очень охота работать с компонентами SOAP Toolkit - то надо смотреть в сторону класса SoapConnector - но там возни... Так что проще руками формировать и разбирать soap пакеты. ------------------ WBR, Igor |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Руками в случае SOAP работать намного проще и быстрее, да и нет заморочек с установкой ActiveX. Как-то было у меня такая задача. Без OLE обёртки все оказалось очень просто.
------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну, учитывая что HTTP транспорт это всё же обычно именно активикс (другое дело что тот же MSXML в каком-то виде всегда есть в современных виндах - если не зашиваться на конкретную версию то можно и обойтись без "доустановок")... Или достаточно сложный и вроде как небесплатный класс от WestWind...
------------------ WBR, Igor |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
EgorDudkin Автор Сообщений: 3 Дата регистрации: 20.06.2012 |
Спасибо други!
Я с веб сервисами никогда не сталкивался, но вот пришлось. )) Читая ваши ответы, беседу между вами, получаю точки отсчета так сказать, копаю по ним. Уже несколько дней перерываю интернет, нужно сказать не мало нового узнал о лисе для себя и в темах не касающихся конкретно этой. )) Все больше убеждаюсь, что зря закрыли Фокс проект. PS: Интересный момент...))) Родственники мои живут в Добруше и Гомеле, а сам я в Ростове-на-Дону )))) |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
Аркадий Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
Скажите, пожалуйста, как заменить SOAP на MSXML2.XMLHTTP и вызвать методы SOAP. Правильно, если я напишу таким образом? Сам сервис пока не работает, и проверить не могу.
Исправлено 2 раз(а). Последнее : Аркадий, 23.09.16 15:29 |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нет. Как минимум у объекта MSXML2.XMLHTTP нету метода GetServiceToken - нужно банальный send использовать.
Правильный ли приведен "текст" самого запроса - я не в курсе. Кроме того содержимое вставляемых текстовых кусков нужно экранировать (заменять угловые кавычки и некоторые другие спецсимволы, возможно кодировать тексты в UTF-8) - чтобы они соответствовали допустимому внутри XML тегов формату... ------------------ WBR, Igor |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
Аркадий Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
|
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
в данном случае MSXML это только транспорт - по нему посылаются команды и принимаются ответы от сервиса. ЧТО должен делать сервис указано прямо в теле команды - внимательно посмотри на посылаемый XML - там прямо указано имя "метода" который должен выполнить сервис. А в ответе явно указано что за результат этот ответ принёс. Всё это "формально" описано в wsdl - конечно если таковой имеется (зачастую сам сервис возвращает этот "файл" в ответ на специальный запрос с ?wsdl на конце) Там и все поддерживаемые сервисом методы и какие именно ответы будут посланы (в т.ч. входные параметры, выходные параметры/типы данных). Помимо "тела" запроса так же важно правильно задать заголовки запроса - т.е. выполнить правильную последовательность oHTTP.setRequestHeader(...) Далеко не только один единственный "Content-Type" может потребоваться для работы с конкретным сервисом... ------------------ WBR, Igor |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
dimuhametov Сообщений: 1562 Откуда: Костанай Дата регистрации: 01.11.2008 |
Привет всем. Возникла ситуация когда имеется физически файл syncChannel.wsdl в котором расписаны методы и ответы. Сама ссылка на на сервер не содержит специальный запрос "?wsdl". Вопрос в том, как "прикрутить" имеющийся syncChannel.wsdl к запросу? Или никак ? Спасибо ------------------ Незнание делает жизнь такой интересной. |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
mеdstraх Сообщений: 275 Дата регистрации: 25.01.2020 |
50 баксов.
P.S. Давно уже пора монетизировать ресурс и ответы на нем |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Фу таким быть, Серега.
() правда вопрос ТС-а непонятен, что за адрес... Исправлено 1 раз(а). Последнее : of63, 15.02.20 09:59 |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
dimuhametov Сообщений: 1562 Откуда: Костанай Дата регистрации: 01.11.2008 |
Если адрес сервера, то типа такой "http://172.31.32.7/bip-sync/" ------------------ Незнание делает жизнь такой интересной. |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Олег (?)... ты вроде разбирал такие сайты... мдя, погорячиля, у меня в РФ это не открылось, но...
Исправлено 1 раз(а). Последнее : of63, 15.02.20 10:20 |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
dimuhametov Сообщений: 1562 Откуда: Костанай Дата регистрации: 01.11.2008 |
Не откроется, мне общий принцип нужен, если он существует. Или баксы копить для Медстраха ------------------ Незнание делает жизнь такой интересной. Исправлено 2 раз(а). Последнее : dimuhametov, 15.02.20 10:26 |
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Общий принцип - сделай ДОМ, и в ем ищи, всякие тэги. Нет?
|
Re: Доступ к сервисам SOAP,XML, как передать параметры? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Зачем? Ты, используя какой-то WinAPI метод в программе обязательно к нему "прикручиваешь" ссылку на статью MSDN описывающую данный метод? Конечно же wsdl это гораздо более формальный способ описания АПИ, и он может использоваться более высокоуровневыми библиотеками (к примеру Soap toolkit - но он уже 20 лет как умер) для того чтобы динамически создавать прокси-объекты, и "общение" с сервисом выглядело как работа с обычными объектами. Но если работать на уровне HTTP запросов, то wsdl нужен исключительно как документация для правильного составления запросов. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |