Имя: Пароль:
1C
1C 7.7
v7: Синхронные запросы к сайту
, ,
0 brenli
 
30.10.20
13:17
Возможно ли создать синхронные запросы к сайту? Т.е нужно выгрузить большой список товаров на сайт используя json.
Все количество товаров делится по 100 штук. Нужно выгружая ждать пока отработает каждый запрос до получения ответа.
Что можно предпринять?
1 Вафель
 
30.10.20
13:21
юзать . нет
2 MyNick
 
30.10.20
13:22
Не понял проблему автора.
Сайт асинхронно отдает чтоли ответ, не загрузив в себя порцию данных?
3 ДенисЧ
 
30.10.20
13:22
А что, с асинхронными, значит, вопросов не возникает? )))
4 Вафель
 
30.10.20
13:24
как я понял автор хочет параллельно грузить
5 arsik
 
гуру
30.10.20
13:26
Если (4) то фоновыми. В каждое фоновое пихаешь свою часть.
6 arsik
 
гуру
30.10.20
13:26
Сорян не увидел что 77
7 brenli
 
30.10.20
13:34
Вообще суть такая.

Делаю обработку для взаимодействия с Woocommerce из клюшек. По пути создания обработки выплыли неприятные моменты из за того что клюшки стоят на 2003 сервере
который не может нормально работать с https , соответственно не может пройти авторизация.
Вышел из проблемы так с помощью flask наваял прокси скрипт . Все работает корректно - скрипт получает данные из 1с и проталкивает до вэб сервера возвращая ответы...,НО
при попытке создания серии запросов, только последний запрос из серии отрабатывает корректно. В первых запросах по отношению к последнему нет тела из json. Они пустые.
Я уже всю голову сломал.

Вот трассировка работы скрипта с одним товаром в пакете запроса...
Список был сокращен. Я 10 товаров разбил на 10 запросов по 1 товару в запросе.

10.0.0.2 - - [29/Oct/2020 22:31:59] "POST /wp-json/wc/v3/products/batch/ HTTP/1.1" 400 -
db.test.ru
ck_693982c64ef09d3870cf5f8ec2b353e5eef37056
cs_062c1995b091e17f70e4087b9499264fb892edbb
OLOLO
10.0.0.2 - - [29/Oct/2020 22:31:59] "POST /wp-json/wc/v3/products/batch/ HTTP/1.1" 400 -
db.test.ru
ck_693982c64ef09d3870cf5f8ec2b353e5eef37056
cs_062c1995b091e17f70e4087b9499264fb892edbb
OLOLO
10.0.0.2 - - [29/Oct/2020 22:31:59] "POST /wp-json/wc/v3/products/batch/ HTTP/1.1" 400 -
db.test.ru
ck_693982c64ef09d3870cf5f8ec2b353e5eef37056
cs_062c1995b091e17f70e4087b9499264fb892edbb
OLOLO
10.0.0.2 - - [29/Oct/2020 22:31:59] "POST /wp-json/wc/v3/products/batch/ HTTP/1.1" 400 -
db.test.ru
ck_693982c64ef09d3870cf5f8ec2b353e5eef37056
cs_062c1995b091e17f70e4087b9499264fb892edbb
OLOLO
10.0.0.2 - - [29/Oct/2020 22:31:59] "POST /wp-json/wc/v3/products/batch/ HTTP/1.1" 400 -
db.test.ru
ck_693982c64ef09d3870cf5f8ec2b353e5eef37056
cs_062c1995b091e17f70e4087b9499264fb892edbb
OLOLO
{'create': [{'type': 'simple', 'regular_price': '4322.00', 'status': 'publish', 'tax_status': 'none', 'virtual': False, 'catalog_visibility': 'visible', 'featured': False, 'manage_stock': True, 'sku': '', 'downloadable': False, 'name': 'Абажур подвесной Паутина А-33'}]}
https://db.test.ru/wp-json/wc/v3/products/batch/?consumer_key=ck_693982c64ef09d3870cf5f8ec2b353e5eef37056&consumer_secret=cs_062c1995b091e17f70e4087b9499264fb892edbb&;
with body {'create': [{'type': 'simple', 'regular_price': '4322.00', 'status': 'publish', 'tax_status': 'none', 'virtual': False, 'catalog_visibility': 'visible', 'featured': False, 'manage_stock': True, 'sku': '', 'downloadable': False, 'name': 'Абажур подвесной Паутина А-33'}]}
10.0.0.2 - - [29/Oct/2020 22:32:02] "POST /wp-json/wc/v3/products/batch/ HTTP/1.1" 200 -

В самой 1с тело запроса проставляется корректно.
8 brenli
 
30.10.20
13:36
Грешу что 1с не дожидается завершения и создает очередь.  Пробовал ставить таймер для остановки, но безуспешно.
9 brenli
 
30.10.20
13:47
Функция POST_Req(Сервер, JSON, СпЗаголовки, пСтатус) Экспорт
    
    WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); //WinHttpRequest
    
    WinHttp.open("POST",Сервер);
    
    Для Н=1 По СпЗаголовки.РазмерСписка() Цикл
        Значение="";
        Тип = СпЗаголовки.ПолучитьЗначение(Н,Значение);
        WinHttp.SetRequestHeader(СокрЛП(Тип), СокрЛП(Значение));
        
        Сообщить(Тип + СимволТабуляции + Значение);
    КонецЦикла;
    
    Попытка
        WinHttp.send(JSON);
        пСтатус = WinHttp.status;
        Если WinHttp.status = 200 Тогда  
            Сообщить(" HTTP " + WinHttp.Status + " " + WinHttp.StatusText);
            Возврат WinHttp.ResponseText;
        Иначе
            Сообщить("Ошибка отправки запроса","!");
            Сообщить("HTTP " + WinHttp.Status + " " + WinHttp.StatusText);
            Возврат WinHttp.ResponseText;
            //Возврат 0;
        КонецЕсли;
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат 0;
    КонецПопытки;
КонецФункции
10 arsik
 
гуру
30.10.20
13:47
curl уже предлагали?
11 brenli
 
30.10.20
13:48
(10) Нет пока)
12 arsik
 
гуру
30.10.20
13:51
А так пробовал?
WinHttp.open("POST",Сервер,0);
13 arsik
 
гуру
30.10.20
14:20
Смотри фиддлером. Там видно будет, реально не отправляется, в чем я сомневаюсь, или на стороне flask коряво разбирается.
14 arsik
 
гуру
30.10.20
14:42
О. Еще 1 вариант вспомнил stunnel.
15 brenli
 
30.10.20
15:05
Спасибо буду пробовать
16 ДедМорроз
 
31.10.20
16:34
Что мешает обновить msxml и использовать ServerXMLHttpRequest напрямую ?
17 ДедМорроз
 
31.10.20
16:35
По крайней мере на windows xp ServerXMLHttp работает без проблем.
18 trdm
 
31.10.20
17:13
(16) откудова качнуть?
19 Alex_
Alexsin_2020
 
17.11.20
19:45
(0) могу библу свою скинуть для работы с веб сервисами
20 Alex_
Alexsin_2020
 
17.11.20
19:48
Могу в ней реализовать очередь из запросов в итоге сколько бы запросов не выпихнули она сама будет ждать пока первый пакет не отошлет