|
Как правильно высылать Post запрос в 1с? | ☑ | ||
---|---|---|---|---|
0
New_Tesla
11.06.22
✎
16:36
|
всем привет!
вот сделал обработку для обмена с сайтом, тока не пойму чего она не отправляет пост запрос т.е гет запрос норм отправлется на сайт. а при отправке пост запроса приходит ошибка 400 т.е что запрос не правильный #1 NewTesla 11.06.2022 10:27:2811.06.2022 10:28:29 отредактировано NewTesla сосотяние = 400 само тело ответа = Скрытый текст {"error":{"errorKey":"Could not read content from HTTP request body: Unexpected character ('' (code 65279 / 0xfeff)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')\n at [Source: (BufferedReader); line: 1, column: 2]","statusCode":400,"briefSummary":"05100223 Could not read content from HTTP request body: Unexpected character ('' (code 65279 / 0xfeff)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')\n at [Source: (BufferedReader); line: 1, column: 2]","stackTrace":"For security reasons the stack trace is no longer displayed, but the property is kept for previous versions","descriptionURL":"https://api-explorer.alfresco.com"}} |
|||
1
New_Tesla
11.06.22
✎
16:38
|
вот текст обработки
Процедура КнопкаВыполнитьНажатие(Кнопка) СтрокаДжойсон = ПолучитьСтрокуДжойсон1(); сайт = "crhsn"; пользовательсайта = "crhsn"; пароль = "crhsn"; ssl = Новый ЗащищенноеСоединениеOpenSSL( Новый СертификатКлиентаWindows( СпособВыбораСертификатаWindows.Выбирать), Новый СертификатыУдостоверяющихЦентровWindows()); Соединение = Новый HTTPСоединение(сайт,443,пользовательсайта,пароль,,,ssl); ГетЗапрос = Новый HTTPЗапрос("/alfresco/api/-default-/public/alfresco/versions/1/nodes/-my-/children"); Результат = Соединение.Получить(ГетЗапрос); Ресурс = "/alfresco/api/-default-/public/alfresco/versions/1/people/-my-/favorites"; СтрокаJSON = ЭлементыФормы.ПолеВвода1; Заголовки = Новый Соответствие; Заголовки.Вставить("Content-Type", "application/json"); Запрос = Новый HTTPЗапрос(Ресурс, Заголовки); // Запрос.УстановитьТелоИзСтроки(СтрокаДжойсон); Запрос.УстановитьТелоИзСтроки(СтрокаДжойсон); Результат = Соединение.ОтправитьДляОбработки(Запрос); КонецПроцедуры &НаКлиенте Функция ПолучитьСтрокуДжойсон1() Структура = Новый Структура("target"); Структура1 = Новый Структура("file"); Структура11 = Новый Структура("guid"); Структура11.Вставить("guid","abcde-01234"); Структура1.Вставить("file",Структура11); Структура.Вставить("target",Структура1); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, Структура); СтрокаJSON = ЗаписьJSON.Закрыть(); Возврат СтрокаJSON; КонецФункции |
|||
2
New_Tesla
11.06.22
✎
16:40
|
посоморел инфу, вроде все норм, чего не фурычит не совсем понятно
т.е если само тело запроса поместить в постман, то прога его отправляет |
|||
3
Бабрак Кармаль
11.06.22
✎
16:59
|
BOM убери
|
|||
4
MyNick
12.06.22
✎
09:07
|
Написано же почти по-русски
Unexpected character ('' (code 65279 / 0xfeff) |
|||
5
New_Tesla
12.06.22
✎
20:16
|
(3) да, СПАСИБО БОЛЬШОЕ! помогло, не знаю как сюа скрин вставить, вобщем
там где пишем Запрос.УстановитьТелоИзСтроки(СтрокаДжойсон); ретиьим параметром надо предать отключение BOM |
|||
6
New_Tesla
12.06.22
✎
20:21
|
Запрос.УстановитьТелоИзСтроки(СтрокаДжойсон);
и второй вопрос сразу задам, если можно) в пост запросе я получаю айдишник потом, взяв этот айдишник я должен с помощью пут запроса отправить им данные файла в бейс 64 НО! они мне дали только URL запроса node/{id}/content неужто строку Бейс 64 надо в URL записывать, вместо слова content? |
|||
7
Бабрак Кармаль
12.06.22
✎
21:32
|
(6) Лучше в документации посмотри.
Навскидку, тут кажется что тушку файла в base64 надо передавать в теле запроса. В урле указываешь идентификатор, как они хотят - вместе с "content", а метод PUT говорит о том что это заливка файла. Вроде все по RESTовски. Правда, с Content-Type непонятно, что они хотеть будут... Иди в документацию, короче. |
|||
8
New_Tesla
13.06.22
✎
05:34
|
(7) ок, спс!!!
они значит забыли прописать параметры запроса) API эндпоинт Для загрузки контента файла используется метод PUT /nodes/{nodeId}/content, где в параметре nodeId нужно передать id документа, который был создан на предыдущем шаге. URL запроса: /1/nodes/1d113dc7-4b7f-4438-ad0e-ac0152548606/content Тело запроса В теле запроса передаётся двоичное содержимое файла РЛ. Заголовок Content-Type должен соответствовать MIME-типу передаваемого содержимого или application/octet-stream. Ответ В случае успешного обновления в ответе с кодом 200 OK будет JSON, содержащий параметры документа. Аутентификация Используется базовая HTTP аутентификация (Basic). Пользователь клиента API создаётся в ECM и добавляется в сайт заказчика с правами Manager. |
|||
9
New_Tesla
15.06.22
✎
05:46
|
всем привет!
вот еще вопрос: до того с прогерами от портала договаривались что я им буду передавать строку бейс 64 (сначала в 1с кодируем файл в двоичные данные, потом можно закодировать в строку бейс 64) щас они гооворят что надо файл так передавать "читаеш и передаешь сразу" шо они могут имеь ввиду? т.е мы же не можем им отправить значение "ЧтениеФайла" из 1с |
|||
10
Ёпрст
15.06.22
✎
09:35
|
(9) ты общаешься с людьми, далекими от 1с. Простототлай им строку в басе64 и всё.
|
|||
11
Ёпрст
15.06.22
✎
09:36
|
*Просто отдай им
|
|||
12
New_Tesla
15.06.22
✎
19:54
|
(10) да они прост сервис поменяли и поэтому попросили просто файл передавать без кодирования
|
|||
13
New_Tesla
15.06.22
✎
19:55
|
Запрос.УстановитьТелоИзСтроки(СтрокаДжойсон);
Запрос.УстановитьИмяФайлаТела("путь к файлу"); вот, вторая строчка) оказвается, !С могет напряму както файл передавать) |
|||
14
New_Tesla
15.06.22
✎
20:14
|
* вторая строчка относится к PUT запросу
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |