1C + JSON + API в 1с 7.7

1. user602990_lvv 15.03.19 13:05 Сейчас в теме
Здравствуйте.

Подскажите, кто знает, как правильно написать.

Необходимо написать обмен с CRM https://app.salesap.ru/api
Например:

Скрытый текст


В 1с пишу:
Соединение = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");			 
	Соединение.Open("POST", "https://app.salesap.ru/api/v1/deal-stages", 0); 
        Соединение.setRequestHeader("Content-Type","application/vnd.api+json");
	Соединение.setRequestHeader("Authorization", api_token); 

	Параметры = "@- << EOF {""data"":{""type"":""deal-stages"",""attributes"":{""name"":""API 1234""},""relationships"":{""deal-stage-category"":{""data"":{""type"":""deal-stage-categories"",""id"":1}}}}EOF"

        Соединение.Send(СокрЛП(Параметры));
	Рез = Соединение.ResponseText();
Показать


Приходит ошибка:
{"errors":[{"title":"Bad Request","detail":"Empty input () at line 1, column 1 [parse.c:978] in '@- \u003c\u003c EOF {\"data\":{\"type\":\"deal-stages\",\"attributes\":{\"name\":\"API 1234\"},\"relationships\":{\"deal-stage-category\":{\"data\":{\"type\":\"deal-stage-categories\",\"id\":1}}}}EOF","code":"400","status":"400"}]}

Где ошибка?
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
18. user602990_lvv 15.03.19 18:39 Сейчас в теме
(1)
Надо писать только

Параметры = "{""data"":{""type"":""deal-stages"",""attributes"":{""name"":""API 1234""},""relationships"":{""deal-stage-category"":{""data"":{""type"":""deal-stage-categories"",""id"":1}}}}"

Были лишние данные
+
2. ranis888 104 15.03.19 14:14 Сейчас в теме
EOF
{
"data":{
"type":"deal-stages",
"attributes":{
"name":"API 1234"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 1
}
}
}
}
}
EOF
Показать


Вот тут у тебя ошибка если не ошибаюсь
+
3. ranis888 104 15.03.19 14:16 Сейчас в теме
Тебе нужно вот это сделать:
{
"data":{
"type":"deal-stages",
"attributes":{
"name":"API 1234"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 1
}
+
4. ranis888 104 15.03.19 14:20 Сейчас в теме
Bearer - Это еще забыл
+
5. ranis888 104 15.03.19 14:21 Сейчас в теме
ХТТПЗапрос.setRequestHeader("Authorization","Bearer " + ThisIsToken);
+
8. user602990_lvv 15.03.19 14:38 Сейчас в теме
(5) это указано
Токен = "Bearer " + ThisIsToken;
+
16. ranis888 104 15.03.19 15:35 Сейчас в теме
(8) Покажи как у тебя это указано
limmon; +1
6. ranis888 104 15.03.19 14:23 Сейчас в теме
Кавычки в 7.7 я собирал так
Код
   Кав= """";  
ПараметрыPOST= "{"+кав+"phone"+кав+":"+"79999999999"+"," +кав+"body"+кав+":"+кав+"Спасибо за покупку!"+кав+"}";
Показать полностью
+
7. user602990_lvv 15.03.19 14:37 Сейчас в теме
(6) Не помогло, то-же самое
+
9. ranis888 104 15.03.19 15:04 Сейчас в теме
(7) Покажи свой конечный
Параметры =
в окладке
+
10. user602990_lvv 15.03.19 15:11 Сейчас в теме
(9)
Параметры = "@- << EOF {"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stages"+Кав+","+Кав+"attributes"+Кав+":{"+Кав+"name"+Кав+":"+Кав+"API 1234"+Кав+"},"+Кав+"relationships"+Кав+":{"+Кав+"deal-stage-category"+Кав+":{"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stage-categories"+Кав+","+Кав+"id"+Кав+":1}}}}EOF";
+
12. ranis888 104 15.03.19 15:20 Сейчас в теме
(10) Повторю еще раз EOF Тебе тут не нужен. Тебе нужно передать это

 {"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stages"+Кав+","+Кав+"attributes"+Кав+":{"+Кав+"name"+Кав+":"+Кав+"API 1234"+Кав+"},"+Кав+"relationships"+Кав+":{"+Кав+"deal-stage-category"+Кав+":{"+Кав+"data"+Кав+":{"+Кав+"type"+Кав+":"+Кав+"deal-stage-categories"+Кав+","+Кав+"id"+Кав+":1}}
+
11. user602990_lvv 15.03.19 15:17 Сейчас в теме
15. ranis888 104 15.03.19 15:30 Сейчас в теме
(11) Можешь токены дать?
+
17. user602990_lvv 15.03.19 17:43 Сейчас в теме
13. ranis888 104 15.03.19 15:24 Сейчас в теме
Попробуй поиграть с этим сайтом https://apitester.com/
сможешь протестировать запрос
+
14. ranis888 104 15.03.19 15:27 Сейчас в теме
{"errors":[{"title":"Unauthorized","detail":"The access token is invalid","code":401,"status":"401"}]} вот например токен не верный
+
19. VladimirB 16 15.03.19 20:11 Сейчас в теме
Можно улучшить читаемость запросов
такую строку json труднее воспринимать

Параметры = "{""data"":{""type"":""deal-stages"",""attributes"":{""name"":""API 1234""},""relationships"":{""deal-stage-category"":{""data"":{""type"":""deal-stage-categories"",""id"":1}}}}" 


Я работаю так:
создаю таблицу называю ее допустим "ЗапросыHTTP" в ней создаю секцию "deal-stages" на одну строку
в ячейку (1,1) этой секции макета помещаю весь текст запроса в виде


{
        "data":{
          "type":"deal-stages",
          "attributes":{
            "name":"&name&"
          },
          "relationships":{
             "deal-stage-category": {
                "data": {
                    "type": "deal-stage-categories",
                    "id": 1
                }
             }
          }
        }
     }
Показать

использую функцию для доступа к секции макета:

Функция ПолучитьМакетТелаЗапроса(_ИмяЗапроса)  //Имя запроса в нашем случае "deal-stages"
	Таб=СоздатьОбъект("Таблица");
	Таб.ИсходнаяТаблица("ЗапросыHTTP");
	Таб.ВывестиСекцию(_ИмяЗапроса);
	Возврат Таб.Область(1,1).Текст;
КонецФункции

Процедура МояПроцедура()
	Макет_DealStage=ПолучитьМакетТелаЗапроса("deal-stages");
	Макет_DealStage=стрЗаменить(Макет_DealStage,"&name&","Этап из API");
..........
КонецПроцедуры


Показать


Читаемость в этом случае лучше. И корректировать запрос в случае ошибки проще. И ковычки собирать не нужно
acanta; +1
Внимание! Тема сдана в архив

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