|   |   | 
| 
 | HTTP JSON POST | ☑ | ||
|---|---|---|---|---|
| 0
    
        Aswed 10.03.20✎ 18:30 | 
        Пытаюсь отправить данные POST запросом с данными упакованными в JSON
 СоединениеHHTP = Новый HTTPСоединение(Хост); //адрес сервера без http HTTPЗапрос = Новый HTTPЗапрос; ЗаписьJSON = Новый ЗаписьJSON; МассивДанныхJson = Новый Массив; СтруктураДанныхJson = Новый Структура; HTTPЗапрос.АдресРесурса = "/client"; HTTPЗапрос.Заголовки.Вставить("Authorization", "Basic ***"); HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); HTTPЗапрос.Заголовки.Вставить("Accept", "application/json"); HTTPЗапрос.Заголовки.Вставить("Connection", "Keep-Alive"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Контрагенты.Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты"; ЗаписьJSON.УстановитьСтроку(); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл СтруктураИнформации = Новый Структура; СтруктураИнформации.Вставить("type", 0); СтруктураИнформации.Вставить("name", "Тест3"); СтруктураИнформации.Вставить("code", "111"); МассивДанныхJson.Добавить(СтруктураИнформации); КонецЦикла; СтруктураДанныхJson.Вставить("client", МассивДанныхJson); ЗаписатьJSON(ЗаписьJSON, СтруктураДанныхJson); СтрокаJson = ЗаписьJSON.Закрыть(); Сообщить(СтрокаJson); HTTPЗапрос.УстановитьТелоИзСтроки("param="+СтрокаJson); ДокументОтвет = "C:\1\TMP.txt"; Попытка //Отправляем для обработки на наш сервер Ответ = СоединениеHHTP.ОтправитьДляОбработки(HTTPЗапрос, ДокументОтвет); Сообщить(Ответ.КодСостояния); Исключение #Если клиент Тогда Сообщить(ОписаниеОшибки()); #КонецЕсли КонецПопытки; В ответа приходит [{"field":"code","message":"Необходимо заполнить «Код»."},{"field":"type","message":"Необходимо заполнить «Юр. лицо»."},{"field":"name","message":"Необходимо заполнить «Имя»."}] Я уже всю голову сломал что ни так. Ткните носом где не верно написано. | |||
| 1
    
        Cyberhawk 10.03.20✎ 18:43 | 
        Ну может сервис не объект client на корневом уровне ожидает, а сразу массив?     | |||
| 2
    
        Cyberhawk 10.03.20✎ 18:43 | 
        Ну и Content-Type зачем такой ставишь? ЖСОН поставь     | |||
| 3
    
        Сияющий в темноте 10.03.20✎ 18:56 | 
        (2)так он его и посылает,присваивая параметру,а про то,что в этом случае экранирование симаолов не мешало бы сделать,забыл.     | |||
| 4
    
        mzelensky 10.03.20✎ 19:10 | 
        (0) Программулиной SoapUI попробуй. Там все более наглядно и очевидно     | |||
| 5
    
        Aswed 10.03.20✎ 19:21 | 
        (1) Я уже и атк пробовал, всё равно эту ошибку валит.
 (3) Хмммм, думаешь может помочь? Бесит то что при тестировании в Postman всё зашибись уходит, но не могу там посмотреть именно структуру JSON. | |||
| 6
    
        Aswed 10.03.20✎ 19:22 | 
        (4) Не юзал, там есть вариант посмотреть что именно шлётся в JSON?     | |||
| 7
    
        ДенисЧ 10.03.20✎ 19:26 | 
        Сейчас мы весь вечер будем телепить спецификацию того, что ожидает получить сервер...     | |||
| 8
    
        Cyberhawk 10.03.20✎ 19:27 | 
        (5) "Я уже и атк пробовал, всё равно эту ошибку валит" // Ну так это означает, что ты неправильно просто тело передаешь. Тебе оттуда виднее.     | |||
| 9
    
        Cyberhawk 10.03.20✎ 19:28 | 
        "при тестировании в Postman всё зашибись уходит, но не могу там посмотреть именно структуру JSON" // Покажи каким кодом / параметрами в Постмане все успешно уходит     | |||
| 10
    
        Aswed 10.03.20✎ 19:30 | 
        СоединениеHHTP = Новый HTTPСоединение(Хост); //адрес сервера без http
 HTTPЗапрос = Новый HTTPЗапрос; ЗаписьJSON = Новый ЗаписьJSON; СтруктураДанныхJson = Новый Структура; HTTPЗапрос.АдресРесурса = "/api/client"; HTTPЗапрос.Заголовки.Вставить("Authorization", "Basic ****"); HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json"); HTTPЗапрос.Заголовки.Вставить("Accept", "application/json"); HTTPЗапрос.Заголовки.Вставить("Connection", "Keep-Alive"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Контрагенты.Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты"; ЗаписьJSON.УстановитьСтроку(); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда СтруктураИнформации = Новый Структура; СтруктураИнформации.Вставить("type", 0); СтруктураИнформации.Вставить("name", "Тест3"); СтруктураИнформации.Вставить("code", "111"); КонецЕсли; ЗаписатьJSON(ЗаписьJSON, СтруктураИнформации); СтрокаJson = ЗаписьJSON.Закрыть(); Сообщить(СтрокаJson); HTTPЗапрос.УстановитьТелоИзСтроки("param="+СтрокаJson); ДокументОтвет = "C:\1\TMP.txt"; Попытка //Отправляем для обработки на наш сервер Ответ = СоединениеHHTP.ОтправитьДляОбработки(HTTPЗапрос, ДокументОтвет); Сообщить(Ответ.КодСостояния); Исключение #Если клиент Тогда Сообщить(ОписаниеОшибки()); #КонецЕсли КонецПопытки; Переписал вот так. Теперь ругается на синтаксис: {"name":"Bad Request","message":"Invalid JSON data in request body: Syntax error.","code":0,"status":400,"type":"yii\\web\\BadRequestHttpException"} | |||
| 11
    
        Aswed 10.03.20✎ 19:31 | 
        (7) )))))))))))))))))))))))
 Да вот была бы у меня эта спецификация, ни приставал бы. там такие уроды это API делали, что млять почти всё на ощупь приходится подбирать. Хорошо хоть URL дали)))) (9) На рабочем компе осталось, завтра скину точно. Но параметры такие же как в коде. | |||
| 12
    
        ДенисЧ 10.03.20✎ 19:35 | 
        (11) А теперь вторую половину вечера мы будем тепелепить имя сервиса...     | |||
| 13
    
        Aswed 10.03.20✎ 19:38 | 
        (12) )))))))))))
 Не общедоступный, закрытый) Потому и сделанный так убого. | |||
| 14
    
        Garykom гуру 10.03.20✎ 19:51 | 
        (10) У тебя
 "HTTPЗапрос.УстановитьТелоИзСтроки("param="+СтрокаJson);" ну никак не стыкуется с "HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");" Убери это "param="+ | |||
| 15
    
        Aswed 10.03.20✎ 19:57 | 
        (14) Мля!!!!! Garykom ты попал в точку!!!!!
 Именно из-за этой хероты и не работало ни черта!!! Хотя специально сейчас взял те 5 строчек с описанием API, и там написано что именно через "param=" отправлять! Спасибо! | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |