for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
   :: Помощь сайту :: 

API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата: 30.08.17 08:20:09ОтветитьЦитировать
Уважаемые лисоводы, всем привет.

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

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

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

Re: API интерфейс для работы с сообщениями
Chemberzhy

Сообщений: 10144
Откуда: Измаил
Дата: 30.08.17 11:06:35ОтветитьЦитировать
shock19
Столкнулся с необходимостью
shock19
посредством API интерфейса сайта www.sms4b.ru

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

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

Re: API интерфейс для работы с сообщениями
ssa
[Модератор]

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


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




Исправлено: ssa, 30.08.17 11:19
Ratings: 0 negative/0 positive

Re: API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата: 30.08.17 14:05:57ОтветитьЦитировать
Не все так однозначно...
Ratings: 0 negative/0 positive



Re: API интерфейс для работы с сообщениями
ssa
[Модератор]

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


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




Исправлено: ssa, 30.08.17 14:18
Ratings: 0 negative/0 positive

Re: API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата: 30.08.17 15:02:58ОтветитьЦитировать
Любопытно... в том то и дело из браузера все открывается, а вот из самого фокса не хочет, антивируса и файрвола тоже нет...
Ratings: 0 negative/0 positive

Re: API интерфейс для работы с сообщениями
ssa
[Модератор]

Сообщений: 12056
Откуда: Москва
Дата: 30.08.17 15:03:50ОтветитьЦитировать
SOAP установлен?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата: 30.08.17 15:08:20ОтветитьЦитировать
Если имеется ввиду из коробки с фоксом то да
Ratings: 0 negative/0 positive

Re: API интерфейс для работы с сообщениями
ssa
[Модератор]

Сообщений: 12056
Откуда: Москва
Дата: 30.08.17 15:29:12ОтветитьЦитировать
Такой код работает?
  
 ** Упрощенная отправка уникальных сообщений. Возвращает идентификатор сообщения либо код ошибки (<=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

Сообщений: 32017
Дата: 30.08.17 15:48:33ОтветитьЦитировать
Прокся есть? Для winhttp она настроена? Интернет в вашей сети раздаётся не через MS Forefront?

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


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

Re: API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата: 30.08.17 15:58:16ОтветитьЦитировать
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


Вложения:
[Безымянный.jpg (16.7KB)]  

Re: API интерфейс для работы с сообщениями
ssa
[Модератор]

Сообщений: 12056
Откуда: Москва
Дата: 30.08.17 16:02:41ОтветитьЦитировать
Увы, но что-то с сетью. Или, как уже упоминалось, прокси, и/или еще что-то...


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: API интерфейс для работы с сообщениями
vic7tar

Сообщений: 48
Дата: 30.08.17 23:05:29ОтветитьЦитировать
Выше приведенный код - рабочий. Попробуйте переустановить SOAP ToolKit.
Ratings: 0 negative/0 positive

Re: API интерфейс для работы с сообщениями
Igor Korolyov

Сообщений: 32017
Дата: 31.08.17 11:27:14ОтветитьЦитировать
Для проверки того что программа может получить данные из интернета достаточно кода:

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
Дата: 31.08.17 17:07:32ОтветитьЦитировать
Интересно девки пляшут... поставил фокс на windows 7 64 разрядную, все ок, работает, а вот на 10 с той же разрядностью отказывается. Нашел на просторах интернета похожую проблему, но правда с семеркой: www.tek-tips.com. Буду думать дальше.
Ratings: 0 negative/0 positive

Re: API интерфейс для работы с сообщениями
shock19
Автор

Сообщений: 21
Дата: 31.08.17 17:13:21ОтветитьЦитировать
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

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


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

Re: API интерфейс для работы с сообщениями
vic7tar

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


------------------
VFP 9, Win10x64
Ratings: 0 negative/0 positive

Re: API интерфейс для работы с сообщениями
shock19
Автор

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

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

Re: API интерфейс для работы с сообщениями
Igor Korolyov

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


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



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

On-line: 46 leonid  and Guests: 45


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