AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.08.2020, 14:30   #1  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
Интеграция Ax и dadata.ru
Добрый день.

Возникла задача интегрировать нашу Ax 2012 R3 с сервисом dadata.ru, добавить подсказки организации.

Пытаюсь отправить запрос на сервер через RetailWebRequest, но не могу понять, как добавить к запросу API Key и payload в формате JSON, т.е. как перевести в x++ вот этот запрос:

X++:
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Token ${API_KEY}" \
-d '{ "query": "сбербанк" }' \
[url]https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party[/url]
Или я полез не туда и надо смотреть в сторону System.Net.WebRequest/ System.Net.HttpWebResponse?
Старый 20.08.2020, 15:12   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Key у Вас в заголовке, то есть нужно его сформировать. Например, метод doPush класса RetailMediaChannelTwitterConnector
За это сообщение автора поблагодарили: mikki_messer (1).
Старый 20.08.2020, 15:56   #3  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Ax2009

X++:
    str suggest(str resource, str query)
    {
        str data;
        COM http = new COM("MSXML2.XMLHTTP");

        http.open("POST", "http://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/" + resource, false);
        http.setRequestHeader("Content-Type", "application/json");
        http.setRequestHeader("Authorization", "Token " + API_KEY);

        data = "{ \"query\": \"" + query + "\" }";
        http.send(data);

        return http.responseText();
    }

resp = suggest("party", _inn);
За это сообщение автора поблагодарили: mikki_messer (1).
Старый 20.08.2020, 16:53   #4  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
Спасибо, буду разбираться. Если сможете привести пример, буду очень благодарен!
Старый 20.08.2020, 16:54   #5  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
Спасибо! А чем ответ в 2009 парсите, если не секрет?
Старый 20.08.2020, 17:53   #6  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
В сложных случаях
Newtonsoft.Json + обертка в X++

а в этом примере только ОГРН нужен был, так что просто поиск по тексту использовался
Старый 20.08.2020, 18:45   #7  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Да и то как делается в 2012 (упаковка Struct в текст JSON и обратно с использованием стандартно интегрированного Newtonsoft.Json в .net с версии 3.5) без проблем портируется в 2009. Так что тоже можно.
Старый 15.09.2020, 13:58   #8  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
В итоге сделал с помощью System.Net.HttpWebRequest и System.Net.HttpWebResponse:

'url_address' - адрес сервиса dadata, к которому обращаемся,
'queryTxt' - текст запроса, который отправляем,
responseData - ответ сервиса.

Может, кому пригодится

X++:
    System.Net.HttpWebRequest               webRequest;
    System.Net.HttpWebResponse              webResponse;

    System.Exception                        ex;
    System.Exception                        webException;

    System.IO.Stream                        stream;
    System.IO.StreamReader                  streamReader;
    System.Byte[]                           bytes;

    System.Net.WebHeaderCollection          headers;
    str                                     responseData;
    System.Text.UTF8Encoding                encoding;
    ;

        new InteropPermission(InteropKind::ClrInterop).assert();

        webRequest = System.Net.WebRequest::Create('url_address') as  System.Net.HttpWebRequest;

        //Создаём коллекцию заголовков и задаём реквизиты доступа
        headers = new System.Net.WebHeaderCollection();

        //api ключ
        headers.Add("Authorization: Token " + apiKey);

        //секретный ключ
        headers.Add("X-Secret: " + secretKey);

        //устанавливаем параметры запроса
        webRequest.set_Headers(headers);
        webRequest.set_Method('POST');
        webRequest.set_ContentType('application/json');
        webRequest.set_Accept('application/json');
        webRequest.set_Timeout(10000);

        //указываем кодировку запроса
        encoding    = new System.Text.UTF8Encoding();
        bytes       = encoding.GetBytes('queryTxt');

        webRequest.set_ContentLength(bytes.get_Length());

        stream = webRequest.GetRequestStream();
        stream.Write(bytes, 0, bytes.get_Length());
        stream.Close();

        webResponse         = webRequest.GetResponse();

        stream                    = webResponse.GetResponseStream();
        streamReader        = new System.IO.StreamReader(stream);
        responseData        = streamReader.ReadToEnd();

        streamReader.Close();
        stream.Close();

        CodeAccessPermission::revertAssert();
За это сообщение автора поблагодарили: vitart (1), alicedr (1).
Теги
ax2012r3, dadata.ru, интеграция

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
stephenmann: Technical History of Dynamics AX - From Axapta 3.0 to AX2012 Blog bot DAX Blogs 5 03.03.2017 10:22
patrickmouwen: Dynamics AX Retail 3rd party POS and E-commerce integration – Solution Design Blog bot DAX Blogs 0 26.10.2015 12:11
emeadaxsupport: AX Performance Troubleshooting Checklist Part 1B [Application and AOS Configuration] Blog bot DAX Blogs 0 05.09.2014 21:11
dynamics-ax: Official Details about Dynamics AX '6' released, including comments from Microsofts Kees Hertogh Blog bot DAX Blogs 0 11.01.2011 05:22
semanticax: Dynamics AX 2009 Installation - Application Blog bot DAX Blogs 0 22.12.2010 08:11
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:24.