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 — 19.04.22 — 10:35
В дополнение.
Я не понял — в рабочем примере описано 4 параметра в ОтправитьДляОбработки:
HTTP.ОтправитьДляОбработки(ФайлТелаЗапроса, СсылкаНаРесурс, ФайлРезультатИсполнения, ЗаголовокЗапросаHTTP);
А в справке — только 2 там — ФайлТелаЗапроса, СсылкаНаРесурс
Как такое ?
2 — 19.04.22 — 10:37
(1) Посмотри, что у тебя в ответе. Там должна быть ссылка новая, возможно на твой загруженный файл.
3 — 19.04.22 — 10:37
ЗащищенноеСоединение = Неопределено;
Если Протокол = «https» Тогда
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
Если НЕ ПортУказан Тогда
Порт = 443;
КонецЕсли;
КонецЕсли;
Попытка
service = Новый HTTPСоединение(Сервер,Порт,name, psswrd,,Таймаут,ЗащищенноеСоединение);
и т.п..
4 — 19.04.22 — 10:46
5 — 19.04.22 — 10:47
(3)т.е. мне поменять порт ? не понял
6 — 19.04.22 — 10:52
(5) Тебе в ответе прилетает, что давай ка ты иди на https, а не на http. Сделай как в (3)
7 — 19.04.22 — 10:54
+(6) HTTP = Новый HTTPСоединение(ИмяСервера,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
8 — 19.04.22 — 10:55
Спасибо!
Сделал — заработало
HTTP = Новый HTTPСоединение(ИмяСервера,443,,,,,Новый ЗащищенноеСоединениеOpenSSL)
НО! А как сделать для 8.2 ?
Там же нет параметра ЗащищенноеСоединениеOpenSSL
9 — 19.04.22 — 10:56
т.е. обработка выполняется под 8.3 и 8.2.
Для 8.3 заработало.
Для 8.2 — не знаю как указать Новый ЗащищенноеСоединениеOpenSSL
10 — 19.04.22 — 10:57
(9) Вроде никак. Попробуй просто порт указать 443.
Если не прокатит, тогда нужно будет с сервера скачивать сертификат, добавлять его в валидные для 1С
11 — 19.04.22 — 10:59
(9) ну в синтаксис-помощнике посмотрите HTTPСоединение на 8.2. Последний параметр (булево), емнп. ну и про сертификаты не забываем.
12 — 19.04.22 — 11:06
спасибо, попробую
13 — 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 — 19.04.22 — 11:47
Т.е. после
HTTP = Новый HTTPСоединение(ИмяСервера,443,,,,Истина); // порт 443 — для https
свойства соединения — защищеное.
А когда вызываю
Ответ = HTTP.ОтправитьДляОбработки(ФайлТелаЗапроса, СсылкаНаРесурс, ФайлРезультатИсполнения, ЗаголовокЗапросаHTTP);
возникает ошибка — Ошибка работы с Интернет: SSL connect error
15 — 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 — 19.04.22 — 12:28
(15) На вскидку, у тебя 3 варианта
1) https://sync1c.ru/1c-82-https
2) WinHttpRequest
3) stunnel
17 — 19.04.22 — 12:34
+(16) Ах да. Забыл еще один вариант.
4) И конечно микросервис на go 
Кир Пластелинин
18 — 19.04.22 — 12:57
(15) антивирус есть? где то попадалось, что он может заблочить.
(16) по первому пункту — там другой текст ошибки был бы.
-
16.08.2016, 13:17
#1
Пришел за помощью
Передача файла, используя HTTP POST запрос.
Здравствуйте. Нобходимо организовать отправку данных , используя HTTP POST запрос. Я не могу разобраться — как формируется этот запрос? Т.е. есть сформированный файл с определенным именем. Надо его отправить.
HTTPСервер = «Сервер куда отправляю.ru»;
ПостФайл = «C:dataфайл_ккоторый_нужно_от править.csv»;
ФайлРезультат = «C:result.xml»;
Попытка
Соединение = Новый HTTPСоединение(HTTPСервер,80,»ЛО ГИН»,»ПАРОЛЬ»,,Истина);
Исключение
Сообщить(ОписаниеОшибки());
Соединение = Неопределено;
КонецПопытки;
Если Соединение = Неопределено Тогда
Сообщить(«Не удалось подключиться к серверу, указанному в настройке обмена! Обработка прервана!»);КонецЕсли;
ИмяФайла = ФайлРезультат;
А далее — я должна применить — ОтправитьДЛяОбработка(HTTPЗ� �прос, ФайлРезультата)
Как сформировать HTTPЗапрос для имеющегося для отправки файла?
— Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка работы с Интернет: SSL connect error
-
16.08.2016, 14:29
#2
Гордость форума PRO
Re: Передача файла, используя HTTP POST запрос.
Сообщение от Галина111
— Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка работы с Интернет: SSL connect error
Диагностика говорит, что у вас проблемы с установлением коннекта по SSL
А вы и действительно обращаетесь через http («Соединение = Новый HTTPСоединение») через 80-й порт. Для установления связи через SSL нужно иметь соответствующий сертификат и «связь» идет посредством https
-
17.08.2016, 06:09
#3
Пришел за помощью
Re: Передача файла, используя HTTP POST запрос.
Здравствуйте. Спасибо за ответ. А можно поподробнее — про сертификат. КУда и как этот сертификат нужно установить? Я вижу этот сертитификат, когда вхожу на этот зайт.
-
17.08.2016, 07:40
#4
Гордость форума PRO
Re: Передача файла, используя HTTP POST запрос.
Сообщение от Галина111
КУда и как этот сертификат нужно установить? Я вижу этот сертитификат, когда вхожу на этот зайт.
Почитайте:
http://1c-pro.ru/threads/priem-i-otp…y-s-ssl.51306/
http://infostart.ru/public/303044/
А можно и дальше поискать что интересное по данной теме
https://www.google.ru/webhp?sourceid…-8#q=ssl%201c8Удачи
-
17.08.2016, 07:50
#5
Пришел за помощью
Re: Передача файла, используя HTTP POST запрос.
Первые два- использование сторонней программы ? Ну и неужели Вы думаете, что я не искала в Интернете? Не поняла — как устанавливать сертификат.
-
17.08.2016, 09:18
#6
Пришел за помощью
Re: Передача файла, используя HTTP POST запрос.
Я вошла на сайт, куда необходимо передавать файл, в сертификатате — у меня запустился Мастер экспорта сертификата, выбрала Экспорт в кодировке Base64 и экспортировала, сохранила на рабочий стол , как файл , например 1.cer. Затем, в конфе 1с открыла файл cacert.pem и этот файл — 1.cer и данный из него — скопировала в cacert.pem (добавила).
Но ошибку (SSL — соединения все равно выдает ). Что не так?
-
17.08.2016, 09:22
#7
Гордость форума PRO
Re: Передача файла, используя HTTP POST запрос.
Сообщение от Галина111
Первые два- использование сторонней программы ?
Вы не указали какия у вас платформа 1С — 8.2 или 8.3
Если 8.2 и вам нужно работать через ssl, то без сторонней програмы вам не обойтись.Хотя… Подождите…. Мне кажется мы друг-друга наверное не совсем понимаем.
Уточните — у вас не получается сформировать эл. письмо «внутри» корпоративной сети (к своему например ms exchange) или же отправить письмо «наружу» например на yandex.ru? или же вы хотите общаться с внешними сервисами?Сообщение от Галина111
Не поняла — как устанавливать сертификат.
Чтобы «установить сертификат» вначале нужно его «получить».
В этой части сертификаты бывают 2-видов: самоподписанные («самостоятельно сделанные») и полученные от удостоверяющего центра.
И только после того как у вас будет этот сертификат, вы сможете его установитьА так, может поможет тут — http://infostart.ru/public/79494/
или тут — http://its.1c.ru/db/metod8dev#content:1581:hdoc
-
17.08.2016, 11:01
#8
Пришел за помощью
Re: Передача файла, используя HTTP POST запрос.
У меня — 8.2 .Есть файл(файлы), которые я отправляю на некий сайт- они там попадают в их базу. Сейчас для этого я использую некий файл с расширением *.jar , который запускаю в командной строке с некими ключами и именем каталога, в котором лежат файлы. Все срабатывает, все передается. Теперь надо это же сделать из 1с.
-
17.08.2016, 11:11
#9
Гордость форума PRO
Re: Передача файла, используя HTTP POST запрос.
Сообщение от Галина111
Есть файл(файлы), которые я отправляю на некий сайт- они там попадают в их базу.
Т.е. вам нужно грузить информацию (файл) в сервис, который находится «снаружи».
Сообщение от Галина111
У меня — 8.2
А насколько сложно перейти на 8.3? Я сталкивался с проблемами при работе с сервисами на 8.2
Возможно вам поможет это — https://helpf.pro/faq/view/1298.html
-
17.08.2016, 11:20
#10
Пришел за помощью
Re: Передача файла, используя HTTP POST запрос.
После произведенных действий с сертификатом — теперь выдает другую ошибку
{Форма.Форма.Форма(43)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки): Несоответствие типов (параметр номер ‘1’). И это правильно.
Я делаю
ИмяФайла = ФайлРезультат;
ИмяПостФайла = ПостФайл;
ФайлОтправки = Новый Файл(ИмяПостФайла);
РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Разм� �р());
Заголовки = Новый Соответствие();
Заголовки.Вставить(«Content-Type», «application/x-www-form-urlencoded»);
Заголовки.Вставить(«Content-Lenght», РазмерФайлаОтправки);
Попытка
Соединение.ОтправитьДляОб� �аботки(ФайлОтправки,ИмяФа� �ла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки
ОтправитьДЛяОбработки(HTTPЗ� �прос, ФайлРезультата)
Теперь не понимаю — как сделать этот HTTP-запрос.
Добрый день! Возникли проблемы при попытке отправки запроса по протоколу HTTPS на удаленный сервер. Отправку делаю так: … Соединение = Новый HTTPСоединение(ИмяСервера, , , , , Истина); … Возникает ошибка: «Ошибка работы с Интернет: SSL connect error». Сертификат сервера и корневой сертификат установлены. Серверный сертификат соответствует имени сервера. Через браузер по HTTPS на сервер заходит без ошибок. Пробовал манипуляции с файлом «cacert.pem» как написано здесь , не помогло. Пробовал на версиях 1С:Предприятия 8.2.14.540 и 8.2.15.294.
Ответ не в тему, но если ничего не получится, посмотри в сторону WinHTTP
Хотелось бы сделать без использования COM-объектов. Как я понимаю, из написаного здесь , все возможно сделать с помощью HTTPСоединения. Такое ощущение, что я не дохожу до проблем описанных в указанном топике.
а ты уверен что надо использовать ОтправитьДляОбработки а не Записать ?
Судя по хелпу для отправки POST’а надо использовать именно ОтправитьДляОбработки: Синтаксис:
давай-давай. Сам убил на это две недели, второй жизни к сожалению не имею. Для сведения: на WinHTTP уже больше года как работает, не только с серверным сертификатом, но и с клиентским
Сделал на WinHTTP, спасибо за совет.
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
0
— 04.09.2012 — 14:20
Есть два терминальных сервера.
На одном следующий код отрабатывает нормально:
HTTP = Новый HTTPСоединение(Сервер,,Пользователь,Пароль,,Истина );
HTTP.Получить(АдресРесурсов, ИмяФайла);
на другом валится с ошибкой Ошибка работы с Интернет: SSL connect error
— и на том, и на другом сервере в IE после ввода логина/пароля никаких ошибок не возникает.
— простейшая обработка с ПолемHTMLДокумента на форме также пускает и в том, и в другом случае.
— файлы сертификатов в BINе вроде как одинаковые.
версия платформы и в том, и в другом случае 8.2.13
куда еще копать?
как заставить работать этот код и там, и там?
1
— 05.09.2012 — 11:50
up что ль
2
— 05.09.2012 — 12:46
Разные ОСи стоят на терминалах?
3
— 05.09.2012 — 12:51
Помню как-то искал про это инфу:
http://itland.ru/forum//index.php?sh…dpost&p=102128
в итоге обошлись вообще без HTTPСоединение и плясок с бубном, просто скриптом
wget —no-check-certificate <адрес>
4
— 05.09.2012 — 13:15
Цитата:
Сообщение от android 
Разные ОСи стоят на терминалах?
одинаковые win2008server
Цитата:
Сообщение от android 
в итоге обошлись вообще без HTTPСоединение и плясок с бубном, просто скриптом
хочется все же понять из-за чего…
Добрый день!
Пожалуйста, объясните почему, подскажите как и укажите на ошибки. Вот код подключения к Вашему API:
HTTPЗапрос = Новый HTTPЗапрос();
HTTPЗапрос.АдресРесурса = «/api/v2/clean»;
HTTPЗапрос.Заголовки.Вставить(«Content-Type», «application/json»);
HTTPЗапрос.Заголовки.Вставить(«Authorization», «Token » + Token);
HTTPЗапрос.Заголовки.Вставить(«X-Secret», Secret);
HTTPЗапрос.Заголовки.Вставить(«charset», «UTF-8»);
HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(Новый ДвоичныеДанные(ИмяВременногоФайла));//во временном файле строка вида: { «structure»: [ «ADDRESS» ], «data»: [ [ «Россия, Свердловская область, Шалинский городской округ, поселок Сарга, Россия» ] ] }
Соединение = Новый HTTPСоединение(«dadata.ru»,,,, Новый ИнтернетПрокси,, Новый ЗащищенноеСоединениеOpenSSL);
ОтветHTTP = Соединение.ВызватьHTTPМетод(«POST», HTTPЗапрос);
Проблема в том, что со временем появляется ошибка вида:
Ошибка при вызове метода контекста (ВызватьHTTPМетод)
ОтветHTTP = Соединение.ВызватьHTTPМетод(«POST», HTTPЗапрос);
по причине:
Ошибка работы с Интернет: Ошибка инициализации SSL-соединения
То есть запросы могут проходить нормально и получать полноценный ответ, а потом через некоторое время начинают сыпаться ошибки. Подскажите куда смотреть и на что обратить внимание — хотим с Вами интегрироваться, но стабильности получить не удается. Тут явно что то с SSL — может явно как то Ваши сертификаты надо подсовывать 1С. но откуда их брать или…во общем помоги пожалуйста.
