|
Не получается простая выгрузка в http - возврат 301 | ☑ | ||
---|---|---|---|---|
0
OlegSham
19.04.22
✎
10:34
|
Прошу помочь советом, не получается простая выгрузка в http - возврат 301
до этого не писал выгрузку в http, поэтому не ругайте. Взял в качестве примера рабочую выгрузку, которая на работе. И по аналогии сделал. Но не заработало. база УПП 8.2, но может работать и под 8.3. Сейчас работаю в ней релизе 8.3.20.1710. в примере ниже чуть изменил адреса и пароли Надо по адресу https://api.mindbox.ru/v3/operations/bulk?endpointId=FinAppOffline&operation=DirectCrm.PointsOfContacts.Import&csvCodePage=65001 отправить тело запроса. ИмяСервера = "api.mindbox.ru"; СсылкаНаРесурс = "/v3/operations/bulk?endpointId=FinAppOffline&operation=DirectCrm.PointsOfContacts.Import&csvCodePage=65001"; Делаю так Вариант 1. HTTP = Новый HTTPСоединение(ИмяСервера); // Получим временный файл для передачи в теле POST запроса ФайлТелаЗапроса = ПолучитьИмяВременногоФайла(); Текст.Записать(ФайлТелаЗапроса, КодировкаТекста.ANSI); // Получим временный файл — тело ответа POST запроса ФайлРезультатИсполнения = ПолучитьИмяВременногоФайла(); ЗаголовокЗапросаHTTP = Новый Соответствие(); ЗаголовокЗапросаHTTP.Вставить("Authorization", "Mindbox secretKey=""Y78952UE7a5S"""); ЗаголовокЗапросаHTTP.Вставить("Accept","application/json"); ЗаголовокЗапросаHTTP.Вставить("Content-Type", "text/csv;charset=utf-8"); Ответ = HTTP.ОтправитьДляОбработки(ФайлТелаЗапроса, СсылкаНаРесурс, ФайлРезультатИсполнения, ЗаголовокЗапросаHTTP); КодСостояния = Ответ.КодСостояния; // возвращает 301 Вариант 2. HTTP = Новый HTTPСоединение(ИмяСервера); HTTPЗапрос = Новый HTTPЗапрос(СсылкаНаРесурс); HTTPЗапрос.УстановитьИмяФайлаТела(ФайлТелаЗапроса); Ответ = HTTP.ОтправитьДляОбработки(HTTPЗапрос); КодСостояния = Ответ.КодСостояния; // возвращает 301 Удалось установить, что пароль не влияет. Т.е. еще до авторизации неверно. Возможно, что надо передать как https - но не могу поставить как в справке - не работает. HTTP = Новый HTTPСоединение(ИмяСервера,,,,Истина); Как проверить и протестировать ? |
|||
1
OlegSham
19.04.22
✎
10:35
|
В дополнение.
Я не понял - в рабочем примере описано 4 параметра в ОтправитьДляОбработки: HTTP.ОтправитьДляОбработки(ФайлТелаЗапроса, СсылкаНаРесурс, ФайлРезультатИсполнения, ЗаголовокЗапросаHTTP); А в справке - только 2 там - ФайлТелаЗапроса, СсылкаНаРесурс Как такое ? |
|||
2
arsik
гуру
19.04.22
✎
10:37
|
(1) Посмотри, что у тебя в ответе. Там должна быть ссылка новая, возможно на твой загруженный файл.
|
|||
3
p-soft
19.04.22
✎
10:37
|
ЗащищенноеСоединение = Неопределено;
Если Протокол = "https" Тогда ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL; Если НЕ ПортУказан Тогда Порт = 443; КонецЕсли; КонецЕсли; Попытка service = Новый HTTPСоединение(Сервер,Порт,name, psswrd,,Таймаут,ЗащищенноеСоединение); и т.п.. |
|||
4
OlegSham
19.04.22
✎
10:46
|
(2)Посмотрел ответ.
Там все верно: location = "https://api.mindbox.ru/v3/operations/bulk?endpointId=FinAppOffline&operation=DirectCrm.PointsOfContacts.Import&csvCodePage=65001" т.е. по умолчанию через https |
|||
5
OlegSham
19.04.22
✎
10:47
|
(3)т.е. мне поменять порт ? не понял
|
|||
6
arsik
гуру
19.04.22
✎
10:52
|
(5) Тебе в ответе прилетает, что давай ка ты иди на https, а не на http. Сделай как в (3)
|
|||
7
arsik
гуру
19.04.22
✎
10:54
|
+(6) HTTP = Новый HTTPСоединение(ИмяСервера,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
|
|||
8
OlegSham
19.04.22
✎
10:55
|
Спасибо!
Сделал - заработало HTTP = Новый HTTPСоединение(ИмяСервера,443,,,,,Новый ЗащищенноеСоединениеOpenSSL) НО! А как сделать для 8.2 ? Там же нет параметра ЗащищенноеСоединениеOpenSSL |
|||
9
OlegSham
19.04.22
✎
10:56
|
т.е. обработка выполняется под 8.3 и 8.2.
Для 8.3 заработало. Для 8.2 - не знаю как указать Новый ЗащищенноеСоединениеOpenSSL |
|||
10
arsik
гуру
19.04.22
✎
10:57
|
(9) Вроде никак. Попробуй просто порт указать 443.
Если не прокатит, тогда нужно будет с сервера скачивать сертификат, добавлять его в валидные для 1С |
|||
11
Кир Пластелинин
19.04.22
✎
10:59
|
(9) ну в синтаксис-помощнике посмотрите HTTPСоединение на 8.2. Последний параметр (булево), емнп. ну и про сертификаты не забываем.
|
|||
12
OlegSham
19.04.22
✎
11:06
|
спасибо, попробую
|
|||
13
OlegSham
19.04.22
✎
11:46
|
Для работы с 8.2.
Посмотрел справку и описания работы. Написал . В свойствах пишет - защищенное соединеие, но HTTP = Новый HTTPСоединение(ИмяСервера,443,,,,Истина); // порт 443 - для https ФайлТелаЗапроса = ПолучитьИмяВременногоФайла(); Текст.Записать(ФайлТелаЗапроса, КодировкаТекста.ANSI); ФайлРезультатИсполнения = ПолучитьИмяВременногоФайла(); ЗаголовокЗапросаHTTP = Новый Соответствие(); ЗаголовокЗапросаHTTP.Вставить("Authorization", "Mindbox secretKey=""YS7852awsXJBCgUE7a5S"""); ЗаголовокЗапросаHTTP.Вставить("Accept","application/json"); ЗаголовокЗапросаHTTP.Вставить("Content-Type", "text/csv;charset=utf-8"); // возникает ошибка - Ошибка работы с Интернет: SSL connect error Ответ = HTTP.ОтправитьДляОбработки(ФайлТелаЗапроса, СсылкаНаРесурс, ФайлРезультатИсполнения, ЗаголовокЗапросаHTTP); |
|||
14
OlegSham
19.04.22
✎
11:47
|
Т.е. после
HTTP = Новый HTTPСоединение(ИмяСервера,443,,,,Истина); // порт 443 - для https свойства соединения - защищеное. А когда вызываю Ответ = HTTP.ОтправитьДляОбработки(ФайлТелаЗапроса, СсылкаНаРесурс, ФайлРезультатИсполнения, ЗаголовокЗапросаHTTP); возникает ошибка - Ошибка работы с Интернет: SSL connect error |
|||
15
OlegSham
19.04.22
✎
12:13
|
Пишут для 8.2
Реализована поддержка протоколов TLS 1.1 и 1.2 в тех случаях, когда в параметрах соединения не указан клиентский сертификат. Протокол SSL v3.0 будет использован только в том случае, если клиентское приложение запускается с параметром командной строки /HttpsForceSSLv3. Во всех остальных случаях протокол SSL v3.0 не используется. Параметр AllowSSLv3 файла conf.cfg игнорируется. Объект ИнтернетПочта не поддерживает протокол SSL v3.0. А как для сервера его пропивать этот параметр ? т.е. как в файле conf.cfg указать AllowSSLv3 ? |
|||
16
arsik
гуру
19.04.22
✎
12:28
|
||||
17
arsik
гуру
19.04.22
✎
12:34
|
+(16) Ах да. Забыл еще один вариант.
4) И конечно микросервис на go :) |
|||
18
Кир Пластелинин
19.04.22
✎
12:57
|
(15) антивирус есть? где то попадалось, что он может заблочить.
(16) по первому пункту - там другой текст ошибки был бы. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |