:: Visual Foxpro, Foxpro for DOS
API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата регистрации: 03.03.2009
Уважаемые лисоводы, всем привет.

Столкнулся с необходимостью отправки СМС-сообщений из программы на VFP, посредством API интерфейса сайта www.sms4b.ru.

Процесс формирования номеров и текстовых сообщений уже реализован, но как теперь передать эти данные на шлюз отправки посредством API ума не приложу.

Учитывая тот факт что ни разу ничего подобного не делал прошу вашей помощи, что почитать? где поглядеть? Если есть уже готовые решения или наработки в этой области готов купить ну или за вознаграждение посмотреть урок от вас.
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
shock19
Столкнулся с необходимостью
shock19
посредством API интерфейса сайта www.sms4b.ru

shock19
что почитать? где поглядеть?

Ну, та к в мануале этого API и надо читать/смотреть.
Здесь можно получить ответ на конкретный вопрос о конкретной проблеме, а не в общих чертах
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Запускаешь фокс, в нём TaskPane, в нём XML WEB Services, Register an XML Web Service, скармливаешь ссылку sms4b.ru
Дальше уж сам догадайся.


------------------
Лень - это неосознанная мудрость.




Исправлено 2 раз(а). Последнее : ssa, 30.08.17 11:19
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата регистрации: 03.03.2009
Не все так однозначно...
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
shock19
Не все так однозначно...
Смотря у кого. Просто в броузер вставь эту ссылку и посмотри откроется ли она. Если нет, то "проблемы на вашей стороне".
1drv.ms


------------------
Лень - это неосознанная мудрость.




Исправлено 1 раз(а). Последнее : ssa, 30.08.17 14:18
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата регистрации: 03.03.2009
Любопытно... в том то и дело из браузера все открывается, а вот из самого фокса не хочет, антивируса и файрвола тоже нет...
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
SOAP установлен?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата регистрации: 03.03.2009
Если имеется ввиду из коробки с фоксом то да
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Такой код работает?
** Упрощенная отправка уникальных сообщений. Возвращает идентификатор сообщения либо код ошибки (<=0)
*Syntax:
*SendSMS(Login AS string, Password AS string, Source AS string, Phone AS long, Text AS string) AS string
*Sample Code:
LOCAL loWSSM AS "XML Web Service"
* LOCAL loWSSM AS "MSSOAP.SoapClient30"
* Do not remove or alter following line. It is used to support IntelliSense for your XML Web service.
*__VFPWSDef__: loWSSM = sms4b.ru , WSSM , WSSMSoap
LOCAL loException, lcErrorMsg, loWSHandler
TRY
loWSHandler = NEWOBJECT("WSHandler",IIF(VERSION(2)=0,"",HOME()+"FFC\")+"_ws3client.vcx")
loWSSM = loWSHandler.SetupClient("https://sms4b.ru/ws/sms.asmx?wsdl", "WSSM", "WSSMSoap")
* Call your XML Web service here. ex: leResult = loWSSM.SomeMethod()
leResult = loWSSM.GetInfo()
CATCH TO loException
lcErrorMsg="Error: "+TRANSFORM(loException.Errorno)+" - "+loException.Message
DO CASE
CASE VARTYPE(loWSSM)#"O"
* Handle SOAP error connecting to web service
CASE !EMPTY(loWSSM.FaultCode)
* Handle SOAP error calling method
lcErrorMsg=lcErrorMsg+CHR(13)+loWSSM.Detail
OTHERWISE
* Handle other error
ENDCASE
* Use for debugging purposes
MESSAGEBOX(lcErrorMsg)
FINALLY
ENDTRY
?leResult


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/1 positive
Re: API интерфейс для работы с сообщениями
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Прокся есть? Для winhttp она настроена? Интернет в вашей сети раздаётся не через MS Forefront?

Впрочем это не так важно как то что SOAP давным давно умер. И если и делать чисто со стороны фокса, то лучше напрямую использовать MSXML2.XMLHTTP и "вручную" запросы формировать. Поиск по форуму даёт материал для размышлений.
Можно ещё на каком-нить C# нарисовать часть общения с веб-сервисом, а из фокса уже вызывать тем или иным образом шарповскую компоненту.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата регистрации: 03.03.2009
ssa
Такой код работает?
** Упрощенная отправка уникальных сообщений. Возвращает идентификатор сообщения либо код ошибки (<=0)
*Syntax:
*SendSMS(Login AS string, Password AS string, Source AS string, Phone AS long, Text AS string) AS string
*Sample Code:
LOCAL loWSSM AS "XML Web Service"
* LOCAL loWSSM AS "MSSOAP.SoapClient30"
* Do not remove or alter following line. It is used to support IntelliSense for your XML Web service.
*__VFPWSDef__: loWSSM = sms4b.ru , WSSM , WSSMSoap
LOCAL loException, lcErrorMsg, loWSHandler
TRY
loWSHandler = NEWOBJECT("WSHandler",IIF(VERSION(2)=0,"",HOME()+"FFC\")+"_ws3client.vcx")
loWSSM = loWSHandler.SetupClient("https://sms4b.ru/ws/sms.asmx?wsdl", "WSSM", "WSSMSoap")
* Call your XML Web service here. ex: leResult = loWSSM.SomeMethod()
leResult = loWSSM.GetInfo()
CATCH TO loException
lcErrorMsg="Error: "+TRANSFORM(loException.Errorno)+" - "+loException.Message
DO CASE
CASE VARTYPE(loWSSM)#"O"
* Handle SOAP error connecting to web service
CASE !EMPTY(loWSSM.FaultCode)
* Handle SOAP error calling method
lcErrorMsg=lcErrorMsg+CHR(13)+loWSSM.Detail
OTHERWISE
* Handle other error
ENDCASE
* Use for debugging purposes
MESSAGEBOX(lcErrorMsg)
FINALLY
ENDTRY
?leResult

Нет к сожалению.
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Увы, но что-то с сетью. Или, как уже упоминалось, прокси, и/или еще что-то...


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
vic7tar

Сообщений: 48
Дата регистрации: 27.02.2017
Выше приведенный код - рабочий. Попробуйте переустановить SOAP ToolKit.
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Для проверки того что программа может получить данные из интернета достаточно кода:

oHttp = CREATEOBJECT("MSXML2.XMLHTTP.6.0")
oHttp.open("GET","https://sms4b.ru/ws/sms.asmx?wsdl")
oHttp.send()
? m.oHttp.responseText

Если выведет "простыню" с содержимым wsdl файла, ну тогда скорее всего проблема в SOAP, если и это ничего не даст - тогда проблема с сетевым соединением - точнее с его настройками НЕ для браузеров.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата регистрации: 03.03.2009
Интересно девки пляшут... поставил фокс на windows 7 64 разрядную, все ок, работает, а вот на 10 с той же разрядностью отказывается. Нашел на просторах интернета похожую проблему, но правда с семеркой: www.tek-tips.com. Буду думать дальше.
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата регистрации: 03.03.2009
Igor Korolyov
Для проверки того что программа может получить данные из интернета достаточно кода:
oHttp = CREATEOBJECT("MSXML2.XMLHTTP.6.0")
oHttp.open("GET","https://sms4b.ru/ws/sms.asmx?wsdl")
oHttp.send()
? m.oHttp.responseText

Если выведет "простыню" с содержимым wsdl файла, ну тогда скорее всего проблема в SOAP, если и это ничего не даст - тогда проблема с сетевым соединением - точнее с его настройками НЕ для браузеров.

Простыня вышла...что не так с SOAP вопрос...
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Если так работает, то просто продолжай через XMLHTTP писать код общения с сервисом (поиск поможет, хотя там всё достаточно несложно - сам XML через тот же парсер и разбирается, и, если надо, "формируется"). Забудь про кусок г*на под названием MSSOAP контрол - сам MS про него успешно забыл уже лет 10 как


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
vic7tar

Сообщений: 48
Дата регистрации: 27.02.2017
shock19
Интересно девки пляшут... поставил фокс на windows 7 64 разрядную, все ок, работает, а вот на 10 с той же разрядностью отказывается. Нашел на просторах интернета похожую проблему, но правда с семеркой: www.tek-tips.com. Буду думать дальше.
Только для справки - вылезала такая же ошибка по поводу объекта LOWSSM, переустановил SOAP и все заработало.(см. подпись)


------------------
VFP 9, Win10x64
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата регистрации: 03.03.2009
Igor Korolyov
Если так работает, то просто продолжай через XMLHTTP писать код общения с сервисом (поиск поможет, хотя там всё достаточно несложно - сам XML через тот же парсер и разбирается, и, если надо, "формируется"). Забудь про кусок г*на под названием MSSOAP контрол - сам MS про него успешно забыл уже лет 10 как

Ларчик просто открывался, Игорь спасибо за пинок в правильную сторону. Сразу попутный вопрос, какие подводные камни ждут меня при компиляции в exe? Что то необходимо отдельно ставить на машину клиента или "фокс" зверь самодостаточный?
Ratings: 0 negative/0 positive
Re: API интерфейс для работы с сообщениями
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Если речь про SOAP, то его придётся устанавливать на клиентские машины. Если про MSXML - то для самого фокса нужно установить 4-ю версию (через неё работает XMLAdapter - в принципе если в программе эта часть фокса не используется, то можно забить). Для вышеприведенного кода нужен MSXML парсер 6-й версии. В новых ОС он есть по умолчанию, для старых можно установить. В принципе вполне можно обойтись и старинным 3-й версии - он встроен в любые актуальные версии винды, включая даже WinXP. Просто в имени класса убрать .6.0
По собственно рантайму фокса на форуме не раз писалось что нужно и как это можно установить (можно и не устанавливать, просто рядом с твоим exe файлы рантайма положить - несколько dll-ек).


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 51 alexzima  (Гостей: 50)

© 2000-2024 Fox Club 
Яндекс.Метрика