Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Запрос АПИ к Новой почте , Запрос АПИ к Новой почте через json не работает          
alex1c Подменю пользователя
сообщение 19.08.19, 9:10
Сообщение #1

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 235
Спасибо сказали: 45 раз
Рейтинг: 40

Уважаемые коллеги, помогите разобраться.
Нужно сделать стыковку УТП с Новой почтой, платформа 1С:Предприятие 8.3 (8.3.10.2505).
Через xml получилось, но хочется через json, а с ним чего-то не взлетает.

Текст запроса:
{
"apiKey": "хххххххххххххххххххххххххххх",
"modelName": "Address",
"calledMethod": "getAreas",
"methodProperties": {}
}

Код:
Процедура JSONНажатие(Элемент)
    
    Адрес = "api.novaposhta.ua/v2.0/json/";
    СоединениеHTTP = Новый HTTPСоединение(Адрес,,,,,,);
    
    ЗапросHTTP = Новый HTTPЗапрос(Адрес);
    ЗапросHTTP.УстановитьТелоИзСтроки(ТекстЗапроса);
    //ЗапросHTTP.Заголовки.Вставить("Content-Type", "text/json");
    ЗапросHTTP.Заголовки.Вставить("Content-Type","application/json; charset=utf-8");    
    
    //Результат = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
    Результат = СоединениеHTTP.ВызватьHTTPМетод("POST", ЗапросHTTP);
    
    ответКакСтрока = Результат.ПолучитьТелоКакСтроку();
    ОтветСтрока = сокрлп(ТекущаяДата())+Символы.ПС+ответКакСтрока;
    
КонецПроцедуры


В ответе приходит:
{"success":false,"data":[],"errors":["Data is invalid"],"warnings":[],"info":[],"messageCodes":[],"errorCodes":[],"warningCodes":[],"infoCodes":[]}

Подскажите что не так?

Vladal Подменю пользователя
сообщение 19.08.19, 10:11
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

Их демо-пример работает?

[необходимо зарегистрироваться для просмотра ссылки]

alex1c Подменю пользователя
сообщение 19.08.19, 10:22
Сообщение #3

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 235
Спасибо сказали: 45 раз
Рейтинг: 40

Vladal @ Сегодня, 11:11 * ,

Через xml только, а вот json - никак.

sava1 Подменю пользователя
сообщение 19.08.19, 11:44
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Меня в Гугле еще не забанили - смотрите сами - форматировать неохота

Процедура ОбновитьОтделенияV2() Экспорт 
СтрокаJSON = Новый ЗаписьJSON;
СтрокаJSON.УстановитьСтроку();
СтруктураЗнч = новый Структура;
СтруктураЗнч.Вставить("apiKey","хххххххххххххххххххххххххххх");
СтруктураЗнч.Вставить("modelName","Address");
СтруктураЗнч.Вставить("calledMethod","getWarehouses");
Соот = Новый Соответствие; Соот.Вставить("","");
СтруктураЗнч.Вставить("methodProperties",Соот);
Настройка = Новый НастройкиСериализацииJSON;
ЗаписатьJSON(СтрокаJSON, СтруктураЗнч,);
исхстрокаJSON = СтрокаJSON.Закрыть();
структураОтвета = ЗапросКСерверуНовойПочты(исхстрокаJSON);
Если НЕ структураОтвета=Неопределено тогда
ВремТабл = Новый ТаблицаЗначений;
ТСтруктура = структураОтвета.data[0];
Для Каждого знч из ТСтруктура Цикл
Если ТипЗнч(знч.Значение) = Тип("Структура") тогда продолжить;
КонецЕсли;
ВремТабл.Колонки.Добавить(СокрЛП(знч.Ключ), Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(250)));
КонецЦикла;
Для каждого стрЗнч из структураОтвета.data Цикл
нСтрока= ВремТабл.Добавить(); ЗаполнитьЗначенияСвойств(нСтрока,стрЗнч); КонецЦикла; КонецЕсли; КонецПроцедуры // Функция - Запрос к серверу новой почты // // Параметры: // вхЗначение - только строка от JSON // // Возвращаемое значение: // - // Функция ЗапросКСерверуНовойПочты(Знач вхЗначение) Защищенное = Новый ЗащищенноеСоединениеOpenSSL; СоединениеHTTP = Новый HTTPСоединение("<a href="http://api.novaposhta.ua" target="_blank">api.novaposhta.ua</a>",,,,,,Защищенное); ЗапросHTTP = Новый HTTPЗапрос("/v2.0/json/"); ЗапросHTTP.УстановитьТелоИзСтроки(вхЗначение,КодировкаТекста.UTF8); ЗапросHTTP.Заголовки.Вставить("Host","<a href="http://api.novaposhta.ua" target="_blank">api.novaposhta.ua</a>"); ЗапросHTTP.Заголовки.Вставить("Content-Type","application/json"); Результат = СоединениеHTTP.ВызватьHTTPМетод("POST",ЗапросHTTP); исхJSON = Новый ЧтениеJSON; РезультатJSON = Результат.ПолучитьТелоКакСтроку(); исхJSON.УстановитьСтроку(РезультатJSON); исхСтруктура = ПрочитатьJSON(исхJSON); исхJSON.Закрыть(); Если НЕ ТипЗнч(исхСтруктура)=Тип("Структура") тогда ЗаписатьВЖурналРегистрации("Обновление отделений не понятный возврат, запрос:"+вхЗначение+"; результат:"+РезультатJSON,УровеньЖурналаРегистрации.Ошибка); Возврат Неопределено; ИначеЕсли ТипЗнч(исхСтруктура)=Тип("Структура") и не исхСтруктура.success тогда ЗаписатьВЖурналРегистрации("Обновление отделений не правильный возврат, запрос:"+вхЗначение+"; результат:"+РезультатJSON,УровеньЖурналаРегистрации.Ошибка); Возврат Неопределено; КонецЕсли; Возврат исхСтруктура; КонецФункции

alex1c Подменю пользователя
сообщение 19.08.19, 13:06
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 235
Спасибо сказали: 45 раз
Рейтинг: 40

Я это видел.
так тоже ошибка
{"success":false,"data":[],"errors":["Data is invalid"],"warnings":[],"info":[],"messageCodes":[],"errorCodes":[],"warningCodes":[],"infoCodes":[]}

Bernet Подменю пользователя
сообщение 19.08.19, 13:18
Сообщение #6

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

alex1c @ Сегодня, 10:10 * ,
Ориентируюсь на стыковку которую писал сам через json. У меня работало. Во-первых адрес сервиса неправильно указываете, во-вторых тип соединения:
АдресСервиса = "api.novaposhta.ua";
СоединениеHTTP = Новый HTTPСоединение(АдресСервиса,
        ,
        ,
        ,
        ,
        ,
        Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено));

В третьих, запрос выглядит таким образом:
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, Символы.Таб);
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.ПроверятьСтруктуру = Ложь;
    ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
    
    ЗаписьJSON.ЗаписатьНачалоОбъекта();
    
    ЗаписьJSON.ЗаписатьИмяСвойства("apiKey");
    ЗаписьJSON.ЗаписатьЗначение(КлючAPI);    
    
    ЗаписьJSON.ЗаписатьИмяСвойства("modelName");
    ЗаписьJSON.ЗаписатьЗначение("Address");    
    
    ЗаписьJSON.ЗаписатьИмяСвойства("calledMethod");
    ЗаписьJSON.ЗаписатьЗначение("getCities");    
    
    ЗаписьJSON.ЗаписатьКонецОбъекта();
    
    ЗапросСтрока = ЗаписьJSON.Закрыть();

АдресСервиса = "/v2.0/json/";

ЗапросHTTP = Новый HTTPЗапрос(АдресСервиса);
    ЗапросHTTP.Заголовки.Вставить("Content-Type",     "application/json");
    
    ЗапросHTTP.УстановитьТелоИзСтроки(ЗапросСтрока, "UTF-8", ИспользованиеByteOrderMark.НеИспользовать);

        Ответ = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: alex1c,

sava1 Подменю пользователя
сообщение 19.08.19, 13:22
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

тогда надо с НП связываться. Если DAta = invalid - может опять что-то поменяли

Спасибо сказали: alex1c,

alex1c Подменю пользователя
сообщение 19.08.19, 13:38
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 235
Спасибо сказали: 45 раз
Рейтинг: 40

Bernet @ Сегодня, 14:18 * ,
Спасибо, все взлетело!!!!! icon_beer17.gif

ЗапросHTTP.УстановитьТелоИзСтроки(ЗапросСтрока, "UTF-8", ИспользованиеByteOrderMark.НеИспользовать);


Вот в этом месте трабл был.
Всем спасибо, сколько страниц перешарил - вы не представляете...

Сообщение отредактировал alex1c - 19.08.19, 13:45

Спасибо сказали: andr_andrey,

alex1c Подменю пользователя
сообщение 19.08.19, 15:32
Сообщение #9

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 235
Спасибо сказали: 45 раз
Рейтинг: 40

Видать пригодилась тема...

andr_andrey Подменю пользователя
сообщение 19.08.19, 16:39
Сообщение #10

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Спасибо сказали: 166 раз
Рейтинг: 130.8

alex1c @ Сегодня, 16:32 * ,
Это поощрение за обратную связь smile.gif


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Спасибо сказали: Vofka,

alex1c Подменю пользователя
сообщение 19.08.19, 19:12
Сообщение #11

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 235
Спасибо сказали: 45 раз
Рейтинг: 40

andr_andrey @ Сегодня, 17:39 * ,
Ну ничего, надеюсь пригодится. icon_beer17.gif

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 13:22
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!