Имя: Пароль:
1C
 
Подключение из базы 1с к http сервису из другой базы 1ски
0 New_Tesla
 
30.12.19
07:14
Всем салют!!!

вот такой вопрос возник

есть http сервис, мне нужно сегодня сделать обработку по нему, а я никак не подключусь к сервису, хотя он опубликован и  итд

как нужно прописать строки подключения, подскажите, если кто подключался, тк е могу в гугле найти инструкции

вот сервис:

https://pastenow.ru/8ea1826668d2996d91b28584602904ca

шаблон сервиса: /oid/{orderid}/status/{status}/store/{store}/sku/{sku}/amount/{amount}/iin/{iin}/sn/{sn}/fn/{fn}

хотя база опубликована, вот другой сервис из той же базы

https://pastenow.ru/1d6243abcd2e3d5caf9bdf18f6ca7f3c
1 Мимохожий Однако
 
30.12.19
07:17
Это не сложно. Нажми Я справа от темы ветки
2 New_Tesla
 
30.12.19
07:55
(1) вот именно!

что не понятно как по этим иструкциям подключаться

вот например мне нужен запрос без параметров как мне его написать?

я пишу

    Полизователь = "Admin";
    Пароль       = "admin";
    Сервер          = "localhost";
    
    Запрос       = Новый HTTPЗапрос;
    Запрос.АдресРесурса = "/getstores";

    
    
    Соединение = Новый HTTPСоединение(Сервер + "/InfoBase12/hs/getstores",80,"Admin","admin");

    Результат = Соединение.ОтправитьДляОбработки(Запрос);

    Сообщить("Нам вернули код: " + Результат.КодСостояния);


http://catalog.mista.ru/public/955078/

а он не хотит
3 New_Tesla
 
30.12.19
07:56
пользователь и пароль это к самой базе имеется ввиду?
4 Chameleon1980
 
30.12.19
08:12
вот это, наверное, уже убрать нужно
https://prnt.sc/qhdcqg
5 Chameleon1980
 
30.12.19
08:12
оно у тебя в запрос есть
6 New_Tesla
 
30.12.19
08:18
(5) не ,так тоже не хотит
7 ДенисЧ
 
30.12.19
08:38
у меня вот так и работает

    Состояние("Подключение к базе...");
    соед = Новый HTTPСоединение("localhost", 80, "HTTPUser", "qq");
    
    адр = "/Base/hs/Refs/" + ТребуемыйУИД;
    запрос = Новый HTTPЗапрос(адр);
    
    отв = соед.Получить(запрос);
    Если отв.КодСостояния <> 200 Тогда
        Сообщить("Ошибка получения информации");
        Возврат;
    КонецЕсли;
    
    тело = отв.ПолучитьТелоКакСтроку();
    Если Лев(тело, 5) <> "<?xml" Тогда
        Сообщить("Получили непонятное");
        сообщить("" + тело);
        Возврат;
    КонецЕсли;
8 New_Tesla
 
30.12.19
09:16
(7) а ТребуемыйУид это какое значение?
9 ДенисЧ
 
30.12.19
09:21
(8) НужныйСправочник.УникальныйИдентификатор()
10 ДенисЧ
 
30.12.19
09:21
Если что - это в ОФ работает.
11 sikuda
 
30.12.19
10:30
(0) (0) /{База}/hs/oid/{orderid}/status/{status}/store/{store}/sku/{sku}/amount/{amount}/iin/{iin}/sn/{sn}/fn/{fn} - ты точно по этому шаблону идешь и ничего не пропускаещь?
12 New_Tesla
 
30.12.19
10:46
(11) я щас хочу просто отябы вызвать http сервис , без параметров

т.е там около 7 сервисов, обработку мне надо сделать по тому , который с параметрами, тренькаюсь я на другом

http://catalog.mista.ru/public/955078/
13 New_Tesla
 
30.12.19
10:46
14 Chameleon1980
 
30.12.19
10:47
соединение.сервер тебе что в отладке показывает?
15 New_Tesla
 
30.12.19
11:07
(14) там вроде норм, подключение есть

https://pastenow.ru/fdb15e13027bb9131c1ef7ce91951884

но!

при попытке получить ответ выдает 405 ошибку

https://pastenow.ru/3607358342fc76d75dbd78a59d2
16 New_Tesla
 
30.12.19
11:08
17 ssh2006
 
30.12.19
11:19
Кину свой пример, post запрос из отчета одной базы к сервису в другой базе. Передаются параметры ИНН и даты периода

    HTTPСоединение = Новый HTTPСоединение("computer_name", 80, Пользователь, Пароль);
    АдресРесурса = "base_name/hs/dt/report1" + "/" + Организация.ИНН + "/" + Формат(ДатаНач, "ДФ=yyyyMMdd") + "/" + Формат(ДатаКон, "ДФ=yyyyMMdd");
    HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
    
    HTTPЗапрос.УстановитьТелоИзСтроки(Строка);
    
    Попытка
        
        HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
        
    Исключение
        
        Сообщить("Произошла сетевая ошибка при обращении к серверу!" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Важное);
        Возврат;        
        
    КонецПопытки;
    
    КодСостояния = HTTPОтвет.КодСостояния;
    Строка = HTTPОтвет.ПолучитьТелоКакСтроку();

    Если КодСостояния = 200 Тогда
    ИначеЕсли КодСостояния = 401 Тогда
        Сообщить("Ошибка подключения: проверьте логин/пароль...", СтатусСообщения.Важное);
    ИначеЕсли ПустаяСтрока(Строка) Тогда
        Сообщить("Ошибка, код ответа сервера: " + КодСостояния, СтатусСообщения.Важное);
    Иначе
        Сообщить("Ошибка, код ответа сервера: " + КодСостояния + ", " + Строка, СтатусСообщения.Важное);
    КонецЕсли;
    
    Если КодСостояния <> 200 Тогда
        Возврат;
    КонецЕсли;
18 Chameleon1980
 
30.12.19
11:51
Сделай запрос конструктором, а не через адрес ресурса
Запрос=Новый HTTPЗапрос("/getstores");
19 New_Tesla
 
30.12.19
12:09
Ок, щас пробую

кстати вопрос = а пользователь и пароль это пользователь под которыр запускается http сервис, или пользователь и пароль к базе?
20 ДенисЧ
 
30.12.19
12:28
(19) 1сный пользователь
21 New_Tesla
 
30.12.19
18:01
КРЧ вот работающий запрос)

    //GET
    
    Соединение = Новый HTTPСоединение("localhost");
    
    Заголовки = Новый Соответствие();
    Заголовки.Вставить("Authorization", "Basic QWRtaW46YWRtaW4=");
    
    ЗапросHTTP = Новый HTTPЗапрос("/InfoBase12/hs/getstores/", Заголовки);
    
    Ответ = Соединение.Получить(ЗапросHTTP);
    
    ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
    СтруктураОтвета = ПрочитатьТелоОтвета(ТелоОтвета);
    
    Ошибка = "";









Функция ПрочитатьТелоОтвета(Данные)
    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Данные);
    
    Структура = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();
    
    Возврат Структура;
    
КонецФункции

&НаСервере
Процедура ВызватьHttpСервис ()


    //GET
    
    Соединение = Новый HTTPСоединение("localhost");
    
    Заголовки = Новый Соответствие();
    Заголовки.Вставить("Authorization", "Basic QWRtaW46YWRtaW4=");
    
    ЗапросHTTP = Новый HTTPЗапрос("/InfoBase12/hs/getstores/", Заголовки);
    
    
    
    
    Ответ = Соединение.Получить(ЗапросHTTP);
    
    ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
    СтруктураОтвета = ПрочитатьТелоОтвета(ТелоОтвета);
    
    Ошибка = "";

    
КонецПроцедуры;
22 New_Tesla
 
30.12.19
18:04
Чудеса!

Крч чтоб работать с ними нада постман еще скачать

а так вообще есть ли курсы отдельные по энтим вещам?)
23 New_Tesla
 
30.12.19
22:01
теперь самый интересный вопрос = как обратиться к сервису

вот с таким шаблоном)

энто то метод не фурычит)
24 New_Tesla
 
30.12.19
22:01
/oid/{orderid}/status/{status}/store/{store}/sku/{sku}/amount/{amount}/iin/{iin}/sn/{sn}/fn/{fn}
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший