|
|
|
http-запрос через COM-объект, или как переложить код из 77 в 81 | ☑ | ||
|---|---|---|---|---|
|
0
Cherokee
14.10.10
✎
09:14
|
Здравствуйте!
Стоит задача - сделать отправку смс из 1с. провайдер предоставил набор команд для отправки и проверки состояния. Отправка делается GET-запросом в UTF8 кодировке. Тестовый аккаунт и пароль проверен вчера - все работает.Для начала, вот то что я сам накропал на 8.1 Процедура КнопкаВыполнитьНажатие(Кнопка) WinHttp= Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"Windows-1251"); WinHttp.Open("GET","http://phtest1012:phtest1012@gate.prostor-sms.ru/send/?phone=+79095961559&text=test",0); WinHttp.SetRequestHeader("Accept-Language", "ru"); WinHttp.SetRequestHeader("Accept-Charset","Windows-1251");// WinHttp.setRequestHeader("Content-Language", "ru"); WinHttp.setRequestHeader("Content-Charset", "Windows-1251"); // //WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=Windows-1251"); // WinHttp.Send(); Сообщить(WinHttp.responsetext); КонецПроцедуры Приходит ответ: error authorization |
|||
|
1
Cherokee
14.10.10
✎
10:11
|
Задам вопрос по-другому. Помогите перекинуть этот код из 7.7 на 8.1.
Процедура Выполнить() Параметр=СоздатьОбъект("СписокЗначений"); Параметр.ДобавитьЗначение(текст, "Текст"); Параметр.ДобавитьЗначение("1110", "Параметры"); ОткрытьФормуМодально("Отчет",Параметр,КаталогИБ() + "ExtForms/B_UTF8_3_0.ert"); текст1 = Параметр; Попытка Соединение = СоздатьОбъект("Addin.V7HttpReader"); Исключение Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"v7plus.dll")=0 Тогда Если ЗагрузитьВнешнююКомпоненту("v7plus.dll")=0 Тогда Сообщить("Не удалось обнаружить компоненту V7Plus.dll!"); СтатусВозврата(0); Возврат; КонецЕсли; КонецЕсли; КонецПопытки; Попытка Соединение = СоздатьОбъект("Addin.V7HttpReader"); Соединение.КоличествоПопытокАвторизации = 0; Исключение Сообщить("Не удалось создать объект Addin.V7HttpReader!"); СтатусВозврата(0); Возврат; КонецПопытки; Попытка ОтзывСервера = ""; Соединение.Пользователь(сокрЛП(Логин),СокрЛП(Пароль)); Соединение.Получить("http://" + сокрЛП(Логин) + ":" + СокрЛП(Пароль) + "@gate.prostor-sms.ru/send/?phone=%2B" + СокрЛП(Тел) + "&text=" + сокрЛП(текст1),ОтзывСервера,2); // запомним id принятого сообщения ID_смс = Лев(СокрЛП(ОтзывСервера), СтрДлина(СокрЛП(ОтзывСервера)) - 9); status_ = Прав(СокрЛП(ОтзывСервера), 8); Если status_ = "accepted" Тогда сообщить("Смс принята сервером..."); сообщить("---===---"); смс_принято = 0; Пока смс_принято = 0 Цикл Соединение.Получить("http://" + сокрЛП(Логин) + ":" + СокрЛП(Пароль) + "@gate.prostor-sms.ru/status/?id=" + ID_смс,ОтзывСервера,2); состояние("Идет доставка смс..."); status_ = Прав(СокрЛП(ОтзывСервера), 9); Если status_ = "delivered" Тогда сообщить("---===---"); сообщить("Смс успешно доставлена..."); сообщить("---===---"); смс_принято = 1; КонецЕсли; КонецЦикла; КонецЕсли; Исключение Сообщить("Ошибка соединения с сервером: " + ОписаниеОшибки()); КонецПопытки; КонецПроцедуры |
|||
|
2
le_
14.10.10
✎
10:20
|
(0) А что, если без COM-объекта попробовать?
HTTP = Новый HTTPСоединение(...); HTTP.Получить(...); //ИЛИ HTTP.ОтправитьДляОбработки(...); ? |
|||
|
3
le_
14.10.10
✎
10:22
|
И еще, в (0) упоминается UTF-8 и в то же время в коде везде Win-1251 - в чем подвох? )
|
|||
|
4
acsent
14.10.10
✎
10:22
|
1000р
|
|||
|
5
Cherokee
14.10.10
✎
10:22
|
подвох в том что я еще туплю и разбираюсь. За совет спасибо, буду пробовать. Пишите еще, найду решение - отпишусь и сам.
|
|||
|
6
Cherokee
14.10.10
✎
11:41
|
продолжаю эксперименты.
WinHttp= Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"Windows-1251"); //WinHttp.SetProxy(0,"192.168.0.130:8080"); WinHttp.Open("GET","http://api_phtest1012:api_phtest1012@gate.prostor-sms.ru/",0); //WinHttp.SetCredentials("sss","123456",1); WinHttp.SetRequestHeader("Accept-Language", "ru"); WinHttp.SetRequestHeader("Accept-Charset","Windows-1251");// WinHttp.setRequestHeader("Content-Language", "ru"); WinHttp.setRequestHeader("Content-Charset", "Windows-1251"); // WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); WinHttp.Send("send/?phone=79095961559&text=test"); Сообщить(WinHttp.responsetext); теперь и смс перестала приходить :(. Ответ тот же - ошибка авторизации |
|||
|
7
le_
14.10.10
✎
11:53
|
(3) и (4) никак не повлияло? )
|
|||
|
8
le_
14.10.10
✎
11:54
|
(2) и (3) точнее )
|
|||
|
9
Cherokee
14.10.10
✎
12:57
|
все заработало. Окончательный код для будущих страдальцев, мало ли сгодится.
WinHttp= Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"Windows-1251"); WinHttp.Open("GET","http://gate.prostor-sms.ru/send/?phone=%2B79211111111&text=тест",0); WinHttp.SetCredentials("phtest1012","phtest1012", 0); WinHttp.SetRequestHeader("Accept-Language", "ru"); WinHttp.SetRequestHeader("Accept-Charset","Windows-1251");// WinHttp.setRequestHeader("Content-Language", "ru"); WinHttp.setRequestHeader("Content-Charset", "Windows-1251"); // WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=Windows-1251"); WinHttp.Send(); Сообщить(WinHttp.responsetext); |
|||
|
10
ЗлобнийМальчик
14.10.10
✎
12:59
|
пароль поменяйте)
|
|||
|
11
Cherokee
14.10.10
✎
13:04
|
чуток пояснений. Обработка работает, если надо сделать подключение к провайдеру, который отправляет смс-ки путем команды GET.
Подключаем через СОМ виндовую библиотеку, потом в метод OPEN, где сразу прописывается команда send с параметрами смс-ки. Командой WinHttp.SetCredentials устанавливаем параметры юзер и пароль для входа на сервер провайдера. Последний флаг "0", что означает, что команда работает для входа на сервер. Подробней тут http://msdn.microsoft.com/en-us/library/aa384058(VS.85).aspx Параметры прокси-сервера подгребаются из винды автоматически, но при необходимости можно прописать принудительно WinHttp.SetProxy(0,"192.168.1.1:3128"); WinHttp.SetCredentials("user","password", 1); где флаг 1 означает что это для прокси настройка. Дальше не интересно. Последняя команда WinHttp.Send(); ,без текста, т.к. весь запрос прописан в команде Open. enjoy |
|||
|
12
Cherokee
14.10.10
✎
13:05
|
это тестовый доступ, он на 20 смс всего был
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |