json строка

1. user1120707 3 31.10.24 08:50 Сейчас в теме
Здравствуйте уважаемые форумчане
Подскажите пожалуйста как сформировать такой запрос
--location 'https://' \
--header 'Authorization: token ' \
--header 'Content-Type: application/json' \
--data '{
"products": [
{
"sku": "15487",
"name": "Товар Тестовый",
"price": 150,
"category": "Товар",
"description": "Cosme Lovers",
"stock": [
{
"quantity": 1,
"branch_id": "46"
}
]
},
{
"sku": "4548745",
"name": "Товар тестовый 2",
"price": 200,
"category": "Товар",
"description": "Apple iPhone 15 - смартфон, сочетающий в себе передовую оптику, мощный процессор, долгоиграющую бата",
"stock": [
{
"quantity": 5,
"branch_id": "46"
}
]
}
]
}'
у меня получается только
Сформированная строка JSON: {
"products": [
{
"sku": "15487",
"name": "Товар Тестовый",
"price": 150,
"category": "Товар",
"description": "Cosme Lovers",
"stock": [
{
"quantity": 1,
"branch_id": "46"
}
]
},
{
"sku": "4548745",
"name": "Товар тестовый 2",
"price": 200,
"category": "Товар",
"description": "Apple iPhone 15 - смартфон, сочетающий в себе передовую оптику, мощный процессор, долгоиграющую бата",
"stock": [
{
"quantity": 5,
"branch_id": "46"
}
]
}
]
}
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Vlan 36 31.10.24 09:12 Сейчас в теме
(1) Заголовки отдельно добавляются
3. user11111111 31.10.24 09:14 Сейчас в теме
АдресСервера = "site.com";
ПутьКРесурсу = "/shop/items/";

ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
Соединение = Новый HTTPСоединение(АдресСервера, , , , , , ЗащищенноеСоединение);

Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", КлючАвторизации);
Заголовки.Вставить("Content-Type", "application/json");

Запрос = Новый HTTPЗапрос(ПутьКРесурсу, Заголовки);
Запрос.УстановитьТелоИзСтроки(ТвойJSON);

// HTTPМетод: "GET" / "POST"...
Результат = Соединение.ВызватьHTTPМетод(HTTPМетод, Запрос);
Показать
4. user1120707 3 31.10.24 09:17 Сейчас в теме
Вот мой код
SSL = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Новый СертификатыУдостоверяющихЦентровОС());
	    Соединение = Новый HTTPСоединение("market.mbank.kg", 443,,,,, SSL);
	    Сообщить("Соединение установлено");

	    Заголовки = Новый Соответствие;
	    Заголовки.Вставить("Content-Type", "application/json");
	    Заголовки.Вставить("Authorization", "token " + ",,,,"); //Объединение API Key в заголовок

	    Данные = Новый Структура();
	    Данные.Вставить("collection", "myCollection");
	    Данные.Вставить("database", "1c");
	    Данные.Вставить("dataSource", "Cluster7");

	    ЗаписьJSON = Новый ЗаписьJSON;
	    тПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", Истина);
	    ЗаписьJSON.УстановитьСтроку(тПараметрыJSON);

	    МассивДанныхJSON = Новый Массив;

	    Для Каждого Строка Из Объект.ТабличнаяЧасть Цикл
	        тДанные = Новый Структура;
	        тДанные.Вставить("sku", Строка.Артикул);
	        тДанные.Вставить("name", Строка.Наименование);
	        тДанные.Вставить("price", Строка.Цена);
	        тДанные.Вставить("category", Строка.Родитель);
	        тДанные.Вставить("description", Строка.Описание);

	        МассивЗапасов = Новый Массив;
	        тСтруктураЗапасов = Новый Структура;
	        тСтруктураЗапасов.Вставить("quantity", Строка.Остаток);
	        тСтруктураЗапасов.Вставить("branch_id", Строка.Филиал);
	        МассивЗапасов.Добавить(тСтруктураЗапасов);

	        тДанные.Вставить("stock", МассивЗапасов);
	        МассивДанныхJSON.Добавить(тДанные);
	    КонецЦикла;

	    СтруктураДанныхJSON = Новый Структура;
	    СтруктураДанныхJSON.Вставить("products", МассивДанныхJSON);		

	    ЗаписатьJSON(ЗаписьJSON, СтруктураДанныхJSON);
	    СтрокаJS = ЗаписьJSON.Закрыть(); 
		Сообщить("Сформированная строка JSON: " + СтрокаJS);
		
		Запрос = Новый HTTPЗапрос(",,,", Заголовки);
		Запрос.УстановитьТелоИзСтроки(СтрокаJS);

		Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);

		Сообщить(Ответ.ПолучитьТелоКакСтроку());
Показать

но почему то получаю ошибку
<ht ml>
<head><title>405 Not Allowed</title></head>
<body>
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx/1.27.2</center>
</body>
</html>
не подскажете в чем может быть причина
5. Vlan 36 31.10.24 09:20 Сейчас в теме
(4) У вас нет разрешения на запись
6. user11111111 31.10.24 09:23 Сейчас в теме
(4) тут только гадать на кофейной гуще. рекомендую обратиться к документации сервиса.

но если интересно мое предположение, то может там другой метод, например PUT?
7. Vlan 36 31.10.24 09:24 Сейчас в теме
(6) Да скорее всего, такой товар уже есть, его надо обновлять, а не создавать заново.
9. user11111111 31.10.24 09:27 Сейчас в теме
(7) в таком случае ошибка была бы другого характера, например описание причины или другой код

здесь возвращает 405, значит тут проблема в методе или в указанной ссылке, а может вообще токен)
10. Vlan 36 31.10.24 09:31 Сейчас в теме
(9) Это от api зависит. Я бы сперва запросил ключевые данные через GET, если есть такие, то PUT, нет - POST
11. user1120707 3 31.10.24 09:32 Сейчас в теме
(5) можете по подробнее пожалуйста на счет запроса
(10)
14. Vlan 36 31.10.24 09:39 Сейчас в теме
(11) Читайте документацию. Обычно есть возможность получить ID по ключевым полям, например, внутреннему вашему коду или артикулу. Делаете запрос GET. Если возвращается ID, то используете его в запросе PUT, если пусто (или что там вам ответят, я не знаю), то создаете новую позицию через POST
12. user11111111 31.10.24 09:33 Сейчас в теме
(10)
Это от api зависит.


согласен, может быть даже такое, но не тогда когда апи от банка)
8. user1671936 1 31.10.24 09:25 Сейчас в теме
(4) посмотрите документацию апи, там, возможно, метод другой нужен.
20. spacecraft 31.10.24 10:00 Сейчас в теме
(4)
Заголовки.Вставить("Authorization", "token " + ",,,,"); //Объединение API Key в заголовок

вот тут что в итоге получается? Вот прямо слово "token ", к которому добавлен сам токен?
Нужно вместо слова "token " подставить сам токен.
22. user1120707 3 31.10.24 10:03 Сейчас в теме
(5) --header 'Authorization: token ' \
там сначала token а потом ключ идет
(20)
24. user1863362 31.10.24 10:43 Сейчас в теме
(4)
Запрос = Новый HTTPЗапрос(",,,", Заголовки);
Вот тут вот что написано, куда ты свой пост пихаешь-то?
25. user1120707 3 31.10.24 10:45 Сейчас в теме
(5) Разобрался спасибо всем
(24)
26. Vlan 36 31.10.24 11:07 Сейчас в теме
28. starik-2005 3098 31.10.24 14:35 Сейчас в теме
(4)
Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);
Отывет = Соединение.POST(Запрос);
Зачем городить велосипеды?
13. user1120707 3 31.10.24 09:37 Сейчас в теме
Те кто делал сайт сказали что только post запрос
15. user11111111 31.10.24 09:40 Сейчас в теме
(13) лучше было бы конечно спросить документацию и почитать)
17. Vlan 36 31.10.24 09:46 Сейчас в теме
(13) А доступ на сайт у вас есть? Можно посмотреть логи или хотя бы наличие товаров?
16. user1120707 3 31.10.24 09:46 Сейчас в теме
https://panoramic-hygienic-bdf.notion.site/API-6f949480532b42c586321903529a4532 вот документация вроде все сделал по нему может где то ошибся
19. Vlan 36 31.10.24 09:53 Сейчас в теме
(16) "Стоит ограничение: 1 запрос в 15 минут." Может и в этом дело
21. Vlan 36 31.10.24 10:02 Сейчас в теме
(16) А почему вы в прод кидаете запросы? Попробуйте тестовую версию.
23. user1120707 3 31.10.24 10:04 Сейчас в теме
(21) В тестовой тоже самое
18. user1120707 3 31.10.24 09:48 Сейчас в теме
доступа к сайту только как пользователь логи не могу посмотреть товары могу но эти тестовые товары там не появились
27. user1120707 3 31.10.24 11:13 Сейчас в теме
я там не правильно написал ссылку на сайт а именно здесь
Запрос = Новый HTTPЗапрос(",,,", Заголовки);
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот