#0
by Anempadest
Решаю задачу по отправке СМС из 1С. Использую API сервиса SMS-Fly (Украина). Всё уже написал (соединение, отправка запроса XML, разбор ответа), но есть одно препятствие: не могу авторизироваться. От службы поддержки получил пример на PHP: *** Если коротко, то алгоритм действий для разных языков одинаков. 1) Открывается сокет на наш ресурс на 80 порт (стандартный порт http протокола); 2) Формируется XML $data = "<?xml version="1.0" encoding="utf-8"?><request><operation>GETBALANCE</operation></request>"; 3) Формируются заголовки для передаваемых данных. в PHP это выглядит 4) данные записываются в открытое соединение. 5) читаются данные из открытого соединения для получения ответа от сервера. 6) полученные данные анализируются приложением, отслеживается результат выполнения команды. *** Я не большой специалист по HTTP протоколу и отправке POST запросов, поэтому с трудом понимаю написанное. Написал так: *** "POST HTTP/1.1 *** В переменную приёмник получаю ответ "HTTP/1.1 401 Unauthorized", то есть авторизация не выполнена. Уже не знаю, что делать. Поможете?
#1
by EverGreenMouse
|Authorization: Basic "+СокрЛП(Рассылка.Логин)+":"+СокрЛП(Рассылка.Пароль)+" не тут ли косяк? Может так? |Authorization: Basic "СокрЛП(Рассылка.Логин)+":"+СокрЛП(Рассылка.Пароль)"
#3
by AMKahm
А где конвертация в base64 в вашем коде? типа Authorization: Basic "+base64_encode(СокрЛП(Рассылка.Логин)+":"+СокрЛП(Рассылка.Пароль))
#4
by Anempadest
Да, ТП написала про конвертацию. А оно обязательно? Логин - это номер телефона, то есть numeric. А пароль состоит из латинских символов. Мне кажется, перекодировать ничего не нужно. Или я ошибаюсь?
#8
by Anempadest
Хорошие новости. [code] "POST HTTP/1.1
[/code] Удалось авторизоваться на сайте. Но желаемый результат не достигнут. В файл Приемник сервер возвращает просто Главную страницу сайта, а должен вернуть ответ в формате XML. Есть какие-то идеи?
#11
by Anempadest
Истину говоришь, товарищ! Но у этой конторы - самая низкая стоимость СМС в Украине: 0,159 грн.
#13
by Anempadest
Внешнюю компоненту V7PLUS для отправки данного запроса использовать не получилось. Сервер не авторизует соединение, то есть метод не работает:
#15
by Anempadest
Присмотритесь внимательней к коду. Сервер просит отправить Логин и Пароль в закодированном виде.
#17
by oleg_km
А может теорию почитаешь? В протоколе HTTP есть авторизация Basic, Digest, NTLM, SSL. Как правило, разработчики API уже реализуют эту реализацию на уровне своего API. Ты лучше попробуй
#18
by Anempadest
Только ради вас попробовал. И получил ошибку: {Обработка.Извещение.Форма.Модуль}: WinHttp.WinHttpRequest: Нельзя вызвать этот метод до вызова метода Send Мне специалист из СП дал чёткие инструкции, что нужно использовать заголовок:
#20
by Serginio1
Там пример на JavaScript вполне читаемый. Дело в том, что при отсутствии авторизации сервер возвращает еще и какую авторизацию он хочет
#21
by Anempadest
Прости, что я тебя не понимаю, но мне кажется, что ты меня троллишь. Смотри. Эта служба просит у меня послать запрос для отправки СМС. Для авторизации на сервере нужно в заголовке запроса разместить переменную "Authorization" и значение. Обрати внимание, что значение переменной - это не просто строка "Логин:Пароль". Эта строка должна быть ещё закодирована по протоколу Base64. Понял? В заголовке есть переменная и значение. И только так. По-другому работать не будет. Если бы работало, то Служба Поддержки бы этого не скрывала. Не согласен?
#22
by Serginio1
Какой смысл мне тебя троллить? Почитай про авторизацию например Обычно авотризация отдается на откуп Api. Например в Net Класс NetworkCredential является базовым классом, который поддерживает учетные данные в схемах аутентификации на основе пароля, таких как "Обычная", "Дайджест", "NTLM" и "Kerberos". Классы, реализующие интерфейс ICredentials, например класс CredentialCache, возвращают объекты NetworkCredential. Ты не заботишься какую авторизацию поддерживает сервер и как данные авторизации нужно записать.
#25
by Serginio1
А что в этом плохого? Так или иначе он использует не родные компоненты. Я же ему не предлагаю Просто даю понять как правильно использовать инструменты. Просто в Net куча библиотек на все случаи жизни. Что тебя так коробит?
#27
by vladimirmir2012
Да нет просто 1С прекрасно интегрирована с automation и не сложно написать ВК, использующую .Net. Отсюда и приверженность к .Net /в частности/.
#28
by oleg_km
Вот и непонятно, почему многим упоминание дотнета вызывает ассоциацию чуть ли не с ассемблером
#30
by Serginio1
Да нет ассемблер это низкоуровневый код которым пользуются гики. C# уже давно один из самых распространенных инструментов. Да и ВК давно уже писать не надо. Посмотри В 8 ке есть подключение событий. А для 7 ки можно использовать только ВК достающий AppDispatch с передачей в нетовские сборки.
#31
by Anempadest
Я в написал, что при использовании предлагаемого тобой метода 1С выдаёт ошибку. Говорит, что сначала нужно установить связь, а только после этого использовать SetCredentials(Логин,Пароль). Если ты считаешь себя правым в теории, то докажи свою уверенность на практике и покажи, какой код нужно написать в 1С 7.7, чтобы предлагаемый тобой метод заработал. Например, после прочтения литературы о HTTP я понял, что 1С 7.7 не способна выполнить нечто наподобие такого: У неё есть только одна команда: Соединение.ОтправитьДляОбработки(Адрес,Источник,2,Приемник,2); И я так понимаю, что внутри 1С одновременно открывает, делает запрос POST и закрывает (?). И мне, кстати, очень жаль, что как бы встроенный функционал 1С не способен выполнить такую казалось бы популярную и простую задачу. При этом, в 1С 8 подобная команда уже есть.
#32
by Serginio1
Вот пример на JavaScript var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1"); // Specify the target resource. var targURL = ";+ WScript.Echo("Requires Server UserName and Password."); WScript.Echo("Requires Proxy UserName and Password.");
#33
by Serginio1
Из примера видно, что мы сначала посылаем WinHttpReq.send; и обрабатываем какой получили ответ. case 401: WScript.Echo("Requires Server UserName and Password.");
#34
by Serginio1
А где это в семерке Соединение.ОтправитьДляОбработки Если тебе, что то не хватает в семерке используй Net. Там будет что типа врап=СоздатьОбъект("NetObjectToIDispatch45");
#38
by Anempadest
В посте то же, только короче. В общем, спасибо. А я потихоньку буду на 8 переходить.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- Не могу из v7 подключиться v7 к через OLE
- v7: СМС прием и отправка в 1С
- v7: 1С V7.7 в сети
- v7: отправка POST через инет (WinHttp.WinHttpRequest)
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Отправка СМС из 1С v7.7
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: Отправка большого xml через WinHTTPRequest
В этой группе 1С
- присвоить значение полю в табличной части документа (1С 8.3)
- Пустая книга покупок (Бухгалтерия 1С8.2)
- windows server 2008 r2, не запускается 1С, платформа 8.3.6.1999
- стандартная процедура печати в 1С8.2
- Как открыть обработку из конфигурации при старте.
- БП 3.0 Требования накладная почему не видно поля Номенклатурная группа
- БП 2.0: как включить новый документ в "Структуру подчинённости
- Как получить команды в интерфейсе плана обмена?
- Есть спецы по УНФ?
- Где в современном ЗуП 2,5 находиться "Настройка обмена с WEB-сайтом "?
- Мутабельность при записи документа, через ком соединение
- ут 11.1.10 доступные для продажи товары
- УТ11 Интеркампани. Комиссия. Флаг "По товарам к оформлению"
- 1C 8.3 + Windows Server 2008 R2 64x Публикация на веб сервере IIS
- Есть строка длиной 72символа (2 идентификатора). Как напечатать штрихкод?
- Задержанный во времени цифровой единичный импульс
- Регистр сведений прочитать и удалить записи
- Контроль цен закупок УТ 11.1
- Проблема с графическим процессором при использовании браузеров на RDP
- Конвертация, поиск реквизита по наименованию другого реквизита