30.07.2021, 11:37 | #1 |
Участник
|
Использование "/" в параметрах API
Коллеги, добрый день!
Есть задача передать в некоторый API параметр, содержащий "/". Формат обращения к API: uri/действие/параметр Таким образом, если передать параметр с "/", то api не маршрутизируется на соответствующее действие с параметром. Если заменить "/" на кодировку этого символа, то есть "%2F", то через адресную строку браузера всё хорошо отрабатывает. Однако, с реализацией запроса через DAX возникают проблемы: - использование .Net библиотек (System.Net.HttpWebRequest) не даёт результата (ресурс не найден, ошибка 404); - использование COM (XMLHttpRequest) отрабатывает корректно. Что может быть не так с System.Net.HttpWebRequest? Пример кода с System.Net.HttpWebRequest: X++: System.Net.HttpWebRequest httpRequest = null; System.Net.WebHeaderCollection headers; System.Net.HttpWebResponse httpResponse = null; CLRObject clro = null; System.IO.Stream stream = null; System.IO.StreamReader streamReader = null; str url; str result; ; url = 'http://URI/Действие/SP3483CN-L%2FTR'; try { new InteropPermission(InteropKind::ClrInterop).assert(); clro = System.Net.WebRequest::Create(url); httpRequest = clro; httpRequest.set_UserAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"); httpRequest.set_ContentType("application/x-www-form-urlencoded"); httpRequest.set_Method("GET"); httpResponse = httpRequest.GetResponse(); stream = httpResponse.GetResponseStream(); streamReader = new System.IO.StreamReader(stream); result = streamReader.ReadToEnd(); info(result); CodeAccessPermission::revertAssert(); } catch(Exception::CLRError) { throw error(AifUtil::getClrErrorMessage()); } X++: new InteropPermission(InteropKind::ComInterop).assert(); request = new XMLHttpRequest(); url = 'http://URI/Действие/SP3483CN-L%2FTR'; request.open('GET' , connectURL ); request.setRequestHeader("Content-Type", "application/json"); request.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"); request.send(''); tinfo(request.responseText()); CodeAccessPermission::revertAssert();
__________________
MS Dynamics AX 2009 Kernel 5.0.1600.4110 Application 5.0.1500.6491 |
|
Теги |
api, httpwebrequest, xmlhttprequest |
|
|