11.04.2016, 11:16 | #1 |
Участник
|
WebRequest in AX 2009
Добрый день!
Подскажите - нужно передать данные в формате Json и получить ответ в формате json от webservice. В 2012 для этого есть классы: RetailWebRequest request; RetailWebResponse response; А что в 2009? И можно ли эти классы просто перенести из 2012 в 2009 и будут ли они работать? |
|
11.04.2016, 11:58 | #2 |
Участник
|
Проблема решена
Вот пример замечательного джобика описывающего работа по получения курса валюты: 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 |
Участник
|
А зачем вам понадобилось так качать курс валюты ?
В 2009-й есть штатная периодическая операция которая это делает. Только немного по-другому. Или пример чисто для иллюстрации сделан ? |
|
11.04.2016, 15:05 | #4 |
Участник
|
Это чисто пример для иллюстрации - зачада была такая. Есть имена контагентов на русском, и когда люди заводят нового контрагента в специальном поле должен быть сделать автоматически перевод на английкий язык этого имени. Вот собственно решил реализовать через запрос к стороннему сервису - яндекс переводчику.
|
|
18.04.2016, 13:19 | #5 |
Участник
|
А вот пример как можно перевести строку с помощью яндекс переводчика:
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 |
|
|