Имя: Пароль:
1C
1С v8
MongaDB выходит ошибка 406
,
0 redbull4561
 
20.09.17
13:02
Делаю сохранение файлов в монгоДБ с помощью RESTHeart  из 1С

Остановился на том что не могу записать данные методом PUT  возвращает ошибку 406

Может кто сталкивался и может подсказать

Соединение     = Новый HTTPСоединение("localhost", 8080, "Логин", "Пароль",,    60);
    ЧтениеJSON = Новый ЧтениеJSON;
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаголовокЗапроса = Новый Соответствие;
    ЗаголовокЗапроса.Вставить("Content-Type", "application/json");
    ЗаголовокЗапроса.Вставить("Authorization", "Basic " + ХэшАвторизации("Логин", "Пароль"));
    ИмяФайлаОтправки = КаталогВременныхФайлов() + "upload.txt";    
    парПутьКФайлу = "C:\Data\ObmenMongo\dsfs.png";
        
    HTTPЗапрос     = Новый HTTPЗапрос("/FileBaseDB/FileTable/" + Документ.Ссылка.УникальныйИдентификатор() + "?id_type=STRING", ЗаголовокЗапроса);
    Данные         = Новый ДвоичныеДанные(парПутьКФайлу);    
    врСоотв     = Новый Соответствие;    
    врСоотв.Вставить("Base", "1CBase");
    врСоотв.Вставить("Date", ТекущаяДата());
    врСоотв.Вставить("File", Base64Строка(Данные));
    врСоотв.Вставить("desc", парПутьКФайлу);
    
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, врСоотв);
    врСтр = ЗаписьJSON.Закрыть();
    врСтр = СтрЗаменить(врСтр, Символы.ПС, "");
    HTTPЗапрос.УстановитьТелоИзСтроки(врСтр);
    ИмяФайлаОтвета = ПолучитьимяВременногоФайла("txt");
    Ответ         = Соединение.ВызватьHTTPМетод("PUT", HTTPЗапрос, ИмяФайлаОтвета);
1 mistеr
 
20.09.17
13:03
Дожили. На Мисте вопросы по Монге.
2 redbull4561
 
20.09.17
13:04
Вопрос по 1С )  да и вопросов по монге много но дельных не одного
3 redbull4561
 
20.09.17
13:07
Ребят  хорошо будет если хотябы годную доку кто подскажет, не говоря уж о ответе)
4 Вафель
 
20.09.17
13:11
а что ничего более подробно не возвращается?
5 redbull4561
 
20.09.17
13:13
В файл ответа  выходит такая инфа.

{"_exceptions":[{"exception":"org.bson.json.JsonParseException","exception message":"Invalid JSON input. Position: 6. Character: '\ufeff'."}],"http status code":406,"http status description":"Not Acceptable","message":"Invalid JSON"}
6 shamashs
 
20.09.17
13:14
406 это уже ответ сервера сам json у тебя кривоват судя по месаджу (5)
7 shamashs
 
20.09.17
13:15
'\ufeff'. русские буквы ч jsone отправляешь?
8 redbull4561
 
20.09.17
13:20
(7) нет русские буквы не отправляю
Этот когда проверял тоже думал в нем проблема. сформировал в ручную добавил запись в монго  этим наборов ключей
С начало ругалось на перевод строки, убрал  добавилась без проблем.
Тут то я подумал что вот оно решение. удалил переводы строки в 1С.... по не помогло...

врСоотв     = Новый Соответствие;    
    врСоотв.Вставить("Base", "1CBase");
    врСоотв.Вставить("Date", ТекущаяДата());
    врСоотв.Вставить("File", Base64Строка(Данные));
    врСоотв.Вставить("desc", парПутьКФайлу);
    
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, врСоотв);
    врСтр = ЗаписьJSON.Закрыть();
    врСтр = СтрЗаменить(врСтр, Символы.ПС, "");
    HTTPЗапрос.УстановитьТелоИзСтроки(врСтр);
9 redbull4561
 
20.09.17
13:22
(6) Есть подозрения на заголовки, но что то инфы не могу найти (
10 Вафель
 
20.09.17
13:23
покажи весь джсон
https://pastebin.com
11 shamashs
 
20.09.17
13:26
по 406 ошибке смотри http status description":"Not Acceptable", да скорее всего заголовки.
12 dezss
 
20.09.17
13:27
Например, попробуй так.
ЗаголовокЗапроса.Вставить("Content-type","application/json; charset=utf-8");
13 dezss
 
20.09.17
13:28
(12) + может еще надо в заголовках размер тела указывать
14 redbull4561
 
20.09.17
13:29
{
"desc": "C:\\Data\\ObmenMongo\\dsfs.png",
"Base": "1CBase",
"File": "sdfsdfsdf",
"Date": "2017-09-20T15:27:17"}

В поле File   закодированый файл в Base64 ( большой слишкой не стал скидывать
15 redbull4561
 
20.09.17
13:30
(13) (12)  Перебирал такие  вариант, не помогло
16 Вафель
 
20.09.17
13:32
проверь валидность, например, здесь
https://jsonlint.com/#
17 Shur1cIT
 
20.09.17
13:33
(0) обычно я в Postman json отлаживаю, очень удобно, там же руками сам json править можно и проверять на месте
18 shamashs
 
20.09.17
13:36
(16) спс
19 redbull4561
 
20.09.17
13:41
(16)  Проверил структура нормальная  
Единственное что правил там из 1С передался символ переноса строки
20 redbull4561
 
20.09.17
13:43
21 Asmody
 
20.09.17
13:48
\ufeff — это маркер BOM.
22 redbull4561
 
20.09.17
14:23
(21) подскажи что значит?
27 Asmody
 
20.09.17
15:40
28 Вафель
 
20.09.17
15:41
(25) вполне норм получилось (со скриптом если)
29 redbull4561
 
21.09.17
08:21
UP есть еще мысли?