|   |   | 
| 
 | Отправка файл из 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 | 
        Всем     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |