powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выполнить XML
7 сообщений из 7, страница 1 из 1
Выполнить XML
    #37682901
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помоги, не могу никак понять, перерыл тут кучу инфы, например я создаю XML-файл, так как описано на сайте

Адрес сервера:
http://xml.sms16.ru/xml/
или для зашифрованного соединения: https://xml.sms16.ru/xml/

XML-документ:

<?xml version="1.0" encoding="utf-8" ?>
<request>
<message type="flashsms или sms или wappush или vcard">
<sender>Отправитель 1</sender>
<text>Текст сообщения 1</text>
<url>Адрес для WAP Push или vCard</url>
<name>Имя для vCard</name>
<phone cell="79033256699" work="79033256699" fax="79033256699"/>
<email>E-mail vCard</email>
<position>Должность vCard</position>
<organization>Организация vCard</organization>
<address post_office_box="абонентский ящик" street="Улица" city="город" region="Область" postal_code="Индекс" country="Страна"/>
<additional>Дополнительная информация vCard</additional>
<abonent phone="79033256699" number_sms="1" client_id_sms="101" time_send="2001-12-31 12:34" validity_period="2001-12-31 15:34"/>
<abonent phone="79033256699" number_sms="2" client_id_sms="102" time_send="2001-12-31 12:35"/>
...
<abonent phone="79033256699" number_sms="10" client_id_sms="110" time_send=""/>
</message>
<message>
<sender>Отправитель 2</sender>
<text>Текст сообщения 2</text>
<abonent phone="79033256699" number_sms="11" client_id_sms="111"/>
<abonent phone="79033256699" number_sms="12" client_id_sms="112"/>
...
<abonent phone="79033256699" number_sms="20" client_id_sms="120"/>
</message>
...
<security>
<login value="логин" />
<password value="пароль" />
</security>
</request>

Где,
type – тип отправляемого SMS сообщения:
flashsms – flash SMS
sms – обычная SMS
wappush – WAP-Push
vcard – визитная карточка (vCard)

sender – отправитель SMS. Именно это значение будет выводиться на телефоне абонента в поле от кого SMS.
phone – номер абонента, которому адресована SMS.
login value - ваш логин в системе
password value - ваш пароль в системе
number_sms - номер сообщения в пределах отправляемого XML документа.
client_id_sms - число. Необязательный параметр, позволяет избежать повторной отправки. Если раннее с этого аккаунта уже было отправлено SMS с таким номером, то повторная отправка не производится, а возвращается номер ранее отправленного SMS.
time_send – дата и время отправки в формате:
YYYY-MM-DD HH:MM
где, YYYY-год, MM-месяц, DD-день, HH-часы, MM-минуты. Если не задано, то SMS отправляется сразу же.
validity_period – дата и время, после которых не будут делаться попытки доставить SMS в формате: YYYY-MM-DD HH:MM
где, YYYY-год, MM-месяц, DD-день, HH-часы, MM-минуты.
Если не задано, то SMS имеет максимальный срок жизни.

Далее поля выбираются в зависимости от типа отправляемого SMS (type):
text – текст обычного SMS или описание WAP ссылки.
url – ссылка для WAP Push или vCard
name - имя для vCard
cell – номер телефона для vCard
work - номер рабочего телефона для vCard
fax - номер факса для vCard
email - e-mail для vCard
position – должность контакта для vCard
organization - организация для vCard
post_office_box - абонентский ящик для vCard
street – улица для vCard
city – город для vCard
region – область для vCard
postal_code – индекс для vCard
country - страна для vCard
additional - дополнительная информация для vCard

Допустим сделать я его смогу, но как его выполнить или послать что ли так и не понял, если не трудно подскажите как лучше сделать, выполнить и получить результат выполнения...
...
Рейтинг: 0 / 0
Выполнить XML
    #37683486
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот до чего я смог дойти:

1) Создаем файл и заполняем его:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
  If File('d:\SmsTest.xml')  
    gnErrFile = Fopen('d:\SmsTest.xml',12)  
  Else  
    gnErrFile = Fcreate('d:\SmsTest.xml')  
  Endif  
    
  TEXT TO mxml noshow  
  <?xml version="1.0" encoding="utf-8" ?>  
  <request>  
  <message type="sms">  
  <sender>Отправитель</sender>  
  <text>Текст сообщения</text>  
  <abonent phone="79068400553" number_sms="1" client_id_sms="101"/>  
  <security>  
  <login value="test"/>  
  <password value="123456"/>  
  </security>  
  </request>  
  ENDTEXT  
  =Fwrite(gnErrFile, mxml)  
  =Fclose(gnErrFile)


2) Далее пробую отправить, только непонятно переменную писать или уже сам файл?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
  With Createobject("InternetExplorer.Application")  
  	.Navigate2('http://xml.sms16.ru/xml/',,, mxml)  
  	Do While .ReadyState<>4  
  		DoEvents Force  
  	Enddo  
  	Set Step On  
  	lcAnsver=.Document.body.InnerHTML  
  Endwith
...
Рейтинг: 0 / 0
Выполнить XML
    #37683797
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: AngelOKES
> Ну вот до чего я смог дойти:

Ну ты и объясняешь, без кода никогда-бы не догадался что тебе нужно.

Не вижу смысла использовать IE, вполне достаточно XMLHTTP:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
XmlHttp = Createobject("MSXML2.XMLHTTP")
TEXT TO Post_String noshow
  <?xml version="1.0" encoding="utf-8" ?>
  <request>
  <message type="sms">
  <sender>Отправитель</sender>
  <text>Текст сообщения</text>
  <abonent phone="79068400553" number_sms="1" client_id_sms="101"/>
  <security>
  <login value="test"/>
  <password value="123456"/>
  </security>
  </request>
ENDTEXT

With XmlHttp As MSXML2.XmlHttp
 .Open("POST", Post_String, .F.)
 .SetRequestHeader("Host", "http://xml.sms16.ru/xml")
 .SetRequestHeader("Content-type", "text/xml")
 .SetRequestHeader("Cache-Control", "no-store, no-cache")
 .SetRequestHeader("Pragma", "no-cache")
 .SetRequestHeader("User-agent", "Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 
( .NET CLR 3.5.30729)")
 zapros = ""
* Собственно сам запрос
 .Send(Null)
Endwith
* Wait "Ожидаем ответ от веб-сервиса" Window Nowait
* Ожидаем ответа от веб-сервиса или окончания таймаута ожидания
IsSuccesful = .T.
Do While This.XmlHttp.readyState <> 4 And IsSuccesful
 DoEvents Force
* Проверяем, если запрос длится больше минуты, прерываем его и сообщаем об ошибке
 If Abs(Minute(Datetime()) - Minute(dtSt)) > 2 Then
  IsSuccesful = .F.
 Endif
Enddo
If !IsSuccesful Then
 zapros = "-1"
Else
 zapros = XmlHttp.responseXML.XML
Endif
Return zapros



Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выполнить XML
    #37683981
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо вроде бы разобрался, вот мой код:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
TEXT TO mxml noshow
<?xml version="1.0" encoding="utf-8"?>
<request>
<message type="sms">
<sender>**********</sender>
<text>Текст сообщения</text>
<url>http://xml.sms16.ru/xml/ </url>
<abonent phone="79068400553" number_sms="1" client_id_sms="102"/>
</message>
<security>
<login value="abs2"/>
<password value="123456"/>
</security>
</request>
ENDTEXT

mt=Createobject("Microsoft.XMLHTTP")
With mt
	.Open("POST", 'http://xml.sms16.ru/xml/', .F.)
	.setRequestHeader("Content-Type", "text/xml; charset=utf-8")
	.Send(mxml)
	Set Step On
	Do While .readyState<>4
		DoEvents Force
	Enddo
	Set Step On
	tcAnswer=mt.responsetext
	tcAnswer	= Strextract(tcAnswer, [<response>], [</response>])
	lnCntRows	= 0
	Do While .T.
		lcRowText	= Strextract(tcAnswer, [<information], [</information>], lnCntRows+1)
		If Empty(lcRowText)
			Exit
		Else
			lnCntRows	= lnCntRows + 1
			lnSmsNum	= Val(Strextract(lcRowText, [number_sms="],	["]))
			lnIdNum	= Val(Strextract(lcRowText, [id_sms="],	["]))
			lnPart	= Val(Strextract(lcRowText, [parts="],	["]))
			lcStatus	= Strextract(lcRowText, [">])
		Endif
	Enddo
Endwith



Теперь необходимо проверить статус сообщения:

Выполнить вот этот код:

<?xml version="1.0" encoding="utf-8" ?>
<request>
<security>
<login value="логин" />
<password value="пароль" />
</security>
<get_state>
<id_sms>ID SMS в системе для проверки статуса</id_sms>
<id_sms>ID SMS в системе для проверки статуса</id_sms>
<id_sms>ID SMS в системе для проверки статуса</id_sms>
</get_state>
</request>

Вот так получается:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
TEXT TO mxml noshow
<?xml  version="1.0" encoding="utf-8" ?>
<request>
<security>
<login value="abs2"/>
<password value="123456"/>
</security>
<get_state>
<id_sms>226707378</id_sms>
</get_state>
</request>
ENDTEXT



А вот если мне понадобиться число поменять на переменную, то так уже не сделаешь и делаю примерно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
mxml2='<?xml version="1.0" encoding="utf-8"?>'+CRLF
mxml2=mxml2+'<request>'+CRLF
mxml2=mxml2+'<security>'+CRLF
mxml2=mxml2+'<login value="abs2"/>'+CRLF
mxml2=mxml2+'<password value="123456"/>'+CRLF
mxml2=mxml2+'</security>'+CRLF
mxml2=mxml2+'<get_state>'+CRLF
mxml2=mxml2+'<id_sms>226707378</id_sms>'+CRLF
mxml2=mxml2+'<security>'+CRLF
mxml2=mxml2+'</get_state>'+CRLF
mxml2=mxml2+'</request>'


Только вот ошибка здесь выдает, как правильно составить ума не приложу :(
...
Рейтинг: 0 / 0
Выполнить XML
    #37683992
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл добавить
#Define CRLF Chr(13)+Chr(10)
...
Рейтинг: 0 / 0
Выполнить XML
    #37684105
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: AngelOKES
> А вот если мне понадобиться число поменять на переменную, то так уже не сделаешь и делаю примерно так:

Не понятно где меняется число на переменую

> Только вот ошибка здесь выдает, как правильно составить ума не приложу :(

И ошибка не видна, посему непонятна

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выполнить XML
    #37684316
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечный вариант:

1. Отправка смс и проверка ответа сервера:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
#Define CRLF Chr(13)+Chr(10)
mOtp="**928888**"
mText="Probnya SMS"
mNomer="79068400553"
mClient="103"
mxml='<?xml version="1.0" encoding="utf-8"?>'+CRLF
mxml=mxml+'<request>'+CRLF
mxml=mxml+'<message type="sms">'+CRLF
mxml=mxml+'<sender>'+mOtp+'</sender>'+CRLF
mxml=mxml+'<text>'+mText+'</text>'+CRLF
mxml=mxml+'<url>http://xml.sms16.ru/xml/ </url>'+CRLF
mxml=mxml+'<abonent phone="'+mNomer+'" number_sms="1" client_id_sms="'+mClient+'"/>'+CRLF
mxml=mxml+'</message>'+CRLF
mxml=mxml+'<security>'+CRLF
mxml=mxml+'<login value="abs2"/>'+CRLF
mxml=mxml+'<password value="123456"/>'+CRLF
mxml=mxml+'</security>'+CRLF
mxml=mxml+'</request>'
mt=Createobject("Microsoft.XMLHTTP")
With mt
	.Open("POST", 'http://xml.sms16.ru/xml/', .F.)
	.setRequestHeader("Content-Type", "text/xml; charset=utf-8")
	.Send(mxml)
	Do While .readyState<>4
		DoEvents Force
	Enddo
	tcAnswer=mt.responsetext
	tcAnswer	= Strextract(tcAnswer, [<response>], [</response>])
	lnCntRows	= 0
	Do While .T.
		lcRowText	= Strextract(tcAnswer, [<information], [</information>], lnCntRows+1)
		If Empty(lcRowText)
			Exit
		Else
			lnCntRows	= lnCntRows + 1
			lnSmsNum	= Strextract(lcRowText, [number_sms="],	["])
			lnIdNum	= Strextract(lcRowText, [id_sms="],	["])
			lnPart	= Strextract(lcRowText, [parts="],	["])
			lcStatus	= Strextract(lcRowText, [">])
		Endif
	Enddo
Endwith



2. Проверка статуса посланной смс:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
#Define CRLF Chr(13)+Chr(10)
lnIdNum=226832024
mxml='<?xml version="1.0" encoding="utf-8"?>'+CRLF
mxml=mxml+'<request>'+CRLF
mxml=mxml+'<security>'+CRLF
mxml=mxml+'<login value="abs2"/>'+CRLF
mxml=mxml+'<password value="123456"/>'+CRLF
mxml=mxml+'</security>'+CRLF
mxml=mxml+'<get_state>'+CRLF
mxml=mxml+'<id_sms>'+Allt(Str(lnIdNum))+'</id_sms>'+CRLF
mxml=mxml+'</get_state>'+CRLF
mxml=mxml+'</request>'
mt=Createobject("Microsoft.XMLHTTP")
With mt
	.Open("POST", 'http://xml.sms16.ru/xml/state.php', .F.)
	.setRequestHeader("Content-Type", "text/xml; charset=utf-8")
	.Send(mxml)
	Do While .readyState<>4
		DoEvents Force
	Enddo
	tcAnswer=mt.responsetext
	mCntRows	= 0
	Do While .T.
		lcRowText	= Strextract(tcAnswer, [<response>], [</response>], mCntRows+1)
		If Empty(lcRowText)
			Exit
		Else
			mCntRows	= mCntRows + 1
			Set Step On
			mStateId	= Strextract(lcRowText, [state id_sms="],	["])
			mTime	= Strextract(lcRowText, [time="],	["])
			mStatus	= Strextract(lcRowText, [">],	[<])
		Endif
	Enddo
Endwith



Так что всем спасибо!!! Вопросов вроде больше не имею :)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выполнить XML
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]