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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.04.2016, 11:16   #1  
Art_Tanis is offline
Art_Tanis
Участник
 
225 / 36 (2) +++
Регистрация: 04.02.2014
WebRequest in AX 2009
Добрый день!
Подскажите - нужно передать данные в формате Json и получить ответ в формате json от webservice. В 2012 для этого есть классы:

RetailWebRequest request;
RetailWebResponse response;

А что в 2009? И можно ли эти классы просто перенести из 2012 в 2009 и будут ли они работать?
Старый 11.04.2016, 11:58   #2  
Art_Tanis is offline
Art_Tanis
Участник
 
225 / 36 (2) +++
Регистрация: 04.02.2014
Проблема решена
Вот пример замечательного джобика описывающего работа по получения курса валюты:
X++:
static void ExchRateTest(Args _args)
{
    Currency                    currency;
    str                         url;
    str                         exchRate = "";
    str                         fromCurrency, toCurrency;
 

    System.Net.HttpWebRequest   httpRequest  = null;
    System.Net.HttpWebResponse  httpResponse = null;
    CLRObject                   clro         = null;
    System.IO.Stream            stream       = null;
    System.IO.StreamReader      streamReader = null;
    ;

    fromCurrency    = 'USD';
    toCurrency      = 'INR';

    url = "http://finance.yahoo.com/d/quotes.csv?e=.csv&f=l1&s=" + fromCurrency + toCurrency + "=X";

    try
    {
        new InteropPermission(InteropKind::ClrInterop).assert();
        clro         = System.Net.WebRequest::Create(url);
        httpRequest  = clro;
        httpResponse = httpRequest.GetResponse();
        stream = httpResponse.GetResponseStream();
        streamReader = new System.IO.StreamReader(stream);
        exchRate = streamReader.ReadToEnd();

        info(strFmt("%1 to %2 - %3",fromCurrency,toCurrency,exchRate));
        CodeAccessPermission::revertAssert();
    }
    catch(Exception::CLRError)
    {
        throw error(AifUtil::getClrErrorMessage());
    }
}
За это сообщение автора поблагодарили: AlexeyS (1), Logger (3).
Старый 11.04.2016, 13:40   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,877 / 3141 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
А зачем вам понадобилось так качать курс валюты ?
В 2009-й есть штатная периодическая операция которая это делает. Только немного по-другому. Или пример чисто для иллюстрации сделан ?
Старый 11.04.2016, 15:05   #4  
Art_Tanis is offline
Art_Tanis
Участник
 
225 / 36 (2) +++
Регистрация: 04.02.2014
Это чисто пример для иллюстрации - зачада была такая. Есть имена контагентов на русском, и когда люди заводят нового контрагента в специальном поле должен быть сделать автоматически перевод на английкий язык этого имени. Вот собственно решил реализовать через запрос к стороннему сервису - яндекс переводчику.
Старый 18.04.2016, 13:19   #5  
Art_Tanis is offline
Art_Tanis
Участник
 
225 / 36 (2) +++
Регистрация: 04.02.2014
А вот пример как можно перевести строку с помощью яндекс переводчика:

X++:
server static str strTranslate(str _string,languageid _from,languageid _to)
{
    XmlDocument                 xmlDoc = new XmlDocument();
    XmlNode                     xmlNode;
    Xml                         xmlResponse;

    System.Net.HttpWebRequest   httpRequest  = null;
    System.Net.HttpWebResponse  httpResponse = null;
    CLRObject                   clro         = null;
    System.IO.Stream            stream       = null;
    System.IO.StreamReader      streamReader = null;

    str                         url;
    str                         result;
    //TODO::Вставьте ваш ключ для переводов ниже
    #define.key("trnsl.1.1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
    #define.format("html")
    ;

    url = strfmt("https://translate.yandex.net/api/v1.5/tr/translate?key=%1&text=%2&lang=%3&format=%4",#key,_string,strfmt("%1-%2",_from,_to),#format);

    try
    {
        new InteropPermission(InteropKind::ClrInterop).assert();
        clro         = System.Net.WebRequest::Create(url);
        httpRequest  = clro;
        httpResponse = httpRequest.GetResponse();
        stream = httpResponse.GetResponseStream();
        streamReader = new System.IO.StreamReader(stream);
        xmlResponse = streamReader.ReadToEnd();
        xmlDoc.loadXml(xmlResponse);
        xmlNode = xmlDoc.documentElement().selectSingleNode('text');
        result = xmlNode.text();

        CodeAccessPermission::revertAssert();
    }
    catch(Exception::CLRError)
    {
        throw error(AifUtil::getClrErrorMessage());
    }

    return result;
}
За это сообщение автора поблагодарили: S.Kuskov (2), monter (1).
Теги
webrequest

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX Performance Troubleshooting Checklist Part 2 Blog bot DAX Blogs 0 09.09.2014 16:11
semanticax: Dynamics AX 2009 Installation - Application Blog bot DAX Blogs 0 22.12.2010 08:11
emeadaxsupport: Resolving some issues you may experience when creating an AX 2009 Role Center and Enterprise Portal Site using SharePoint Server/Foundation 2010 after installing Microsoft Dynamics AX 2009 SP1 hotfix 2278963 Blog bot DAX Blogs 1 24.09.2010 11:34
mbsturk: Ax 2009 Rollup 4 Version Checker Blog bot DAX Blogs 0 29.04.2010 17:05
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:41.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.