|
Отправка файл из 1С | ☑ | ||
---|---|---|---|---|
0
hellas78
29.11.21
✎
11:29
|
Добрый день.
У меня проблема с пост запросом. Я хочу отправить файл на сторонний веб-сайт. Но не получаеться. Все время ответ от сервера: Неудачная попытка соединения: {ВнешняяОбработка.СохранитьРисункиНоменклатур.Форма.Форма.Форма(403)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка при выполнении файловой операции '/api/v1/services/bulkImport/create/859119df-a608-4c88-aa98-60704647c7e3': Ошибка работы с Интернет: внутренняя ошибка сервера (500). { "message": "Server Error" } : Ошибка работы с Интернет: внутренняя ошибка сервера (500) Вот функция которую я написал. Можете помочь, где ошибку делаю? Заранее блогодарен. Функция ОповеститьСервер(ФайлПрайса, URLСайта, Ресурс,ТокенАвто) Экспорт Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", ""); ИмяФайлаОтвета = КаталогВременныхФайлов() + "answer.tmp"; ИмяФайлаДляЗагрузки = ФайлПрайса; ИмяФайлаОтправки = КаталогВременныхФайлов() + "post.txt"; КодироватьФайл = Ложь; МассивФайловДляОбъединения = Новый Массив; ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("txt"); ФайлОтправкиНачало = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.ANSI, Символы.ПС, Ложь); ФайлОтправкиНачало.ЗаписатьСтроку("--" + Boundary); ФайлОтправкиНачало.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=""" + ИмяФайлаДляЗагрузки + """"); ФайлОтправкиНачало.ЗаписатьСтроку("Content-Type: application/x-octet-stream"); ФайлОтправкиНачало.ЗаписатьСтроку(""); ФайлОтправкиНачало.Закрыть(); МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало); ИмяФайлаДляЗагрузкиВременный = ПолучитьИмяВременногоФайла("tmp"); КопироватьФайл(ИмяФайлаДляЗагрузки, ИмяФайлаДляЗагрузкиВременный); МассивФайловДляОбъединения.Добавить(ИмяФайлаДляЗагрузкиВременный); ИмяФайлаОтправкиКонец = ПолучитьИмяВременногоФайла("txt"); ФайлОтправкиКонец = Новый ЗаписьТекста(ИмяФайлаОтправкиКонец, КодировкаТекста.ANSI, Символы.ПС, Ложь); ФайлОтправкиКонец.ЗаписатьСтроку("--" + Boundary); ФайлОтправкиКонец.ЗаписатьСтроку("--" + Boundary + "--"); ФайлОтправкиКонец.Закрыть(); МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец); ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary+"; charset=ansi"); ЗаголовокHTTP.Вставить("Accept", "application/json; charset=utf-8"); ЗаголовокHTTP.Вставить("Authorization", "Bearer " +ТокенАвто); ФайлОтправки = Новый Файл(ИмяФайлаОтправки); РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер()); ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки); СерверПриемник = URLСайта; НТТР = Новый HTTPСоединение(СерверПриемник); АдресСкрипта = Ресурс; Попытка НТТР.ОтправитьДляОбработки(ИмяФайлаОтправки, АдресСкрипта, ИмяФайлаОтвета, ЗаголовокHTTP); Исключение #Если Клиент Тогда Сообщить("Неудачная попытка соединения: " + ОписаниеОшибки()); #Иначе ЗаписьЖурналаРегистрации("HTTPСоединение", УровеньЖурналаРегистрации.Ошибка, , , "Неудачная попытка соединения: " + ОписаниеОшибки()); #КонецЕсли КонецПопытки; УдалитьФайлы(ИмяФайлаОтправки); Если НЕ КодироватьФайл Тогда Для каждого ЭлементМассива Из МассивФайловДляОбъединения Цикл УдалитьФайлы(ЭлементМассива); КонецЦикла; КонецЕсли; КонецФункции |
|||
1
ГеннадийУО
29.11.21
✎
11:31
|
Не надо отправлять вручную, пользуйтесь готовой библиотекой HTTP коннектор.
|
|||
2
Галахад
гуру
29.11.21
✎
11:35
|
Код ответа 500. Скорее всего, что-то падает на той стороне.
|
|||
3
hellas78
29.11.21
✎
11:37
|
(2) На стороне сервера говорят, что не правильный JSON- запрос. С Постманом проверял, все работает.
|
|||
4
Галахад
гуру
29.11.21
✎
11:47
|
(3) Хм. А где JSON?
|
|||
5
hellas78
29.11.21
✎
11:51
|
(4) Ну сам файл в формате JSON. Ну сервер хочет файл в формате JSON
Вот пример из файла, то есть что в самом файле: [ { "name": "10046 PORTAS. BASE COMPLETO", "description": "10046 PORTAS. BASE COMPLETO", "sku": "NOM00014519", "price": "7", "new_price": "3,5", "size": "0", "stock": 1, "category": "", "sub_category": "" } ] |
|||
6
ДенисЧ
29.11.21
✎
11:52
|
Так надо спросить на стороне сервера, что им не нравится в файле. Мы же этого сервера не видим.
|
|||
7
hellas78
29.11.21
✎
11:58
|
(6) Я спросил и в ответ написали: Ошибка в формате JSON. А если отправить с помощью Postman, то все ок.
В стороне сервера ждут: Headers: Key Value Description Accept application/json Authorization Bearer {token} Body: Key Value Description file Fayl Вроде все отправлю, но ответа нето |
|||
8
Галахад
гуру
29.11.21
✎
11:59
|
(5) Хм. Это вот это JSON?
"--" + Boundary "Content-Disposition: form-data; name=""file""; filename=""" + ИмяФайлаДляЗагрузки + """" "Content-Type: application/x-octet-stream" [ { "name": "10046 PORTAS. BASE COMPLETO", "description": "10046 PORTAS. BASE COMPLETO", "sku": "NOM00014519", "price": "7", "new_price": "3,5", "size": "0", "stock": 1, "category": "", "sub_category": "" } ] "--" + Boundary "--" + Boundary + "--" |
|||
9
hellas78
29.11.21
✎
12:03
|
(8) У меня вот такой получается:
--0a6be27e61744319bdabd8cd9d811e26 Content-Disposition: form-data; name="file"; filename="D:\1C\1C_Klientler\Skandinaviya_Evi_Murad\Fayl.json" Content-Type: application/x-octet-stream [ { "name": "10046 PORTAS. BASE COMPLETO", "description": "10046 PORTAS. BASE COMPLETO", "sku": "NOM00014519", "price": "7", "new_price": "3,5", "size": "0", "stock": 1, "category": "Hamam otağı", "sub_category": "Tualet fırçaları" } ]--0a6be27e61744319bdabd8cd9d811e26 --0a6be27e61744319bdabd8cd9d811e26-- |
|||
10
Галахад
гуру
29.11.21
✎
12:09
|
(9) Ну, чо-то такой себе JSON. Может на пробу убрать лишнее?
|
|||
11
Garykom
гуру
29.11.21
✎
12:11
|
(9) а точно надо json отправлять через "Content-Type: application/x-octet-stream"
Вместо "Content-type: application/json" |
|||
12
Garykom
гуру
29.11.21
✎
12:11
|
Гм а в (0) так и ваще "Content-Type", "multipart/form-data"
)) |
|||
13
hellas78
29.11.21
✎
12:42
|
(10) Ну например, что можно убрать?
|
|||
14
hellas78
29.11.21
✎
13:43
|
Ребята как мне решать эту задачу?
|
|||
15
crasler
29.11.21
✎
14:09
|
(14) Сначала нужно определиться что тебе надо отправлять множественные бинарные данные (файлы) или JSON текст!
|
|||
16
hellas78
29.11.21
✎
14:35
|
(14) Мне надо (то есть сервер так хочет) чтобы я отправил файл с форматом "json". И внутри JSON-текстом
|
|||
17
hellas78
29.11.21
✎
14:38
|
(15)Мне надо (то есть сервер так хочет) чтобы я отправил файл с форматом "json". И внутри JSON-текстом
|
|||
18
arsik
гуру
29.11.21
✎
14:40
|
(17) Покажи нам этот кусок мануала.
|
|||
19
polosov
29.11.21
✎
14:41
|
(17) Запрос = Новый HTTPЗапрос(АдресРесурса);
Запрос.Заголовки..... - добавить нужные Запрос.УстановитьТелоИзСтроки(ТвойJSONСтрокой); Результат = HTTP.ОтправитьДляОбработки(Запрос); |
|||
20
polosov
29.11.21
✎
14:42
|
+(17) Или воспользуйся https://github.com/vbondarevsky/Connector как все нормальные люди делают.
|
|||
21
hellas78
29.11.21
✎
14:55
|
Всем большое спасибо, ошибка была вот здесь:
]--0a6be27e61744319bdabd8cd9d811e26 --0a6be27e61744319bdabd8cd9d811e26-- Вместо этого должна было быть формат такой: ] --0a6be27e61744319bdabd8cd9d811e26 --0a6be27e61744319bdabd8cd9d811e26-- Тема Закрыто |
|||
22
hellas78
29.11.21
✎
14:55
|
(20) Да вы правы коннектор самый лучший.
|
|||
23
Muskat
29.11.21
✎
15:31
|
Привет
|
|||
24
Muskat
29.11.21
✎
15:32
|
Всем
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |