09.12.2014, 15:53 | #21 |
Участник
|
X++: webRequest = System.Net.WebRequest::Create("http://review.maxoptra.com"); webRequest.set_Method("POST"); postData = "http://review.maxoptra.com/rest/2/authentication/createSession?accountID=XXX&user=XXX&password=XXX"; //postData = ""; encodingUTF8 = System.Text.Encoding::get_UTF8(); // пробовал другие кодировки byteArray = encodingUTF8.GetBytes(postData); leng = byteArray.get_Length(); // длина соответствует длине postData webRequest.set_ContentType("application/x-www-form-urlencoded"); webRequest.set_ContentLength(byteArray.get_Length()); //credentialCache = System.Net.CredentialCache::get_DefaultCredentials(); ОК <!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <link rel="shortcut icon" href="/mxm/favicon.ico" type="image/x-icon"/> <script type="text/javascript" src="/mxm-commons/commons/app-template.js" charset="utf-8"></script> <script type="text/javascript" src="/mxm/mxm-api/file/app-template.js" charset="utf-8"></script> <script type="text/javascript"> var application = null; var MX_DIR = "/mxm/"; var MXM_DIR = "/mxm/"; var MX_DEBUG_MODE = false; </script> <link rel="stylesheet" type="text/css" href="/mxm-commons/ext/resources/css/ext-all.css?3.3.1.GT rev:49875"/> <link rel="stylesheet" type="text/css" href="/mxm-commons/packed/commons-main.css?3.3.1.GT rev:49875"/> <script type="text/javascript" src="/mxm-commons/ext/adapter/ext/ext-base.js?3.3.1.GT rev:49875"></script> <script type="text/javascript" src="/mxm-commons/ext/ext-all/ext-all.js?3.3.1.GT rev:49875"></script> <script type="text/javascript" src="/mxm-commons/packed/commons-main.js?3.3.1.GT rev:49875"></script> <script type="text/javascript" src="/mxm-commons/packed/commons-login-form.js?3.3.1.GT rev:49875"></script> <script type="text/javascript" src="/mxm-commons/packed/commons.js?3.3.1.GT rev:49875"></script> <title>Maxoptra Management Application [3.3.1.GT rev:49875]</title> <script type="text/javascript"> eventManager = new mx.app.widget.EventManager(); Ext.onReady(function () { application = new mx.Application(); }); </script> </head> <body> <form id="history-form" class="x-hidden" action=""> <input type="hidden" id="x-history-field"/> <iframe id="x-history-frame"></iframe> </form></body> </html> может в какой-то тонкости хитрость? проверял запрос из postData в Google Chrome в расширении Advanced Rest Client все красиво, отвечает <?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <apiResponse version="1.0"> <authResponse> <sessionID>01c98206543e491f85905c4723e12432</sessionID> </authResponse> </apiResponse> Последний раз редактировалось smailik; 09.12.2014 в 15:57. |
|
09.12.2014, 17:29 | #22 |
Участник
|
Цитата:
http://login : password@url где url - это адрес сервера. Если не получится, то значит у вас адрес неправильный. Страница запроса логина и пароля может не совпадать со страницей, куда отсылается запрос. Скорее всего у вас не получится, так как логин и пароль, которые передаются в internetConnect - это которые веб-сервер запрашивает, а на указанной вами странице возможно не так логин и пароль передаются на сервер. С этим нужно будет разбираться, так как в каждом случае по разному может быть. |
|
10.12.2014, 08:12 | #23 |
Участник
|
попробовал с яндексом
X++: info (time2Str(timeNow(), 1, 1)); hURL = winInetLocal.internetConnect("www.yandex.ru", "", ""); info (time2Str(timeNow(), 1, 1)); результат выполнения Сообщение (09:07:23) 08:57:22 09:07:23 hURL 0, hReq 0, res 0, ret |
|
10.12.2014, 08:21 | #24 |
Участник
|
Заметил вот какую штуку. Просто так в браузере под своим логином и паролем не могу зайти на review.maxoptra.com, но если зайду на review.maxoptra.com/XXX/ где XXX = имя аккаунта, и введу логин пароль, то меня пускает. Пробовал
X++: hURL = winInetLocal.internetConnect("review.maxoptra.com/XXX/", "XXX", "XXX"); Кто нибудь конектился так по хитрому что не только логин и пароль, но еще и аккаунт указывать надо? |
|
10.12.2014, 09:40 | #25 |
Участник
|
У вас точно прямой доступ в интернет и нет никаких прокси?
Это от сервера зависит. Может у них ЧПУ так настроены и на самом деле передается что-то типа ?login=xxx. Но это не важно, важно что запрашивается логин пароль после этого. Вот если бы не спросил пароль, тогда это бы что-то значило |
|
10.12.2014, 09:56 | #26 |
Участник
|
Успешной получилась попытка реализовать нужную мне штуку через
X++: Url urlReq; COM myXmlHttp; str result; ; myXmlHttp = new COM("Microsoft.XMLHTTP"); urlReq = "http://review.maxoptra.com/rest/2/authentication/createSession?accountID=XXX&user=XXX&password=XXX"; myXmlHttp.open("POST",urlReq,false); myXmlHttp.send(""); result = myXmlHttp.responseText(); info(result); <?xml version='1.0' encoding='UTF-8' standalone='yes'?> <apiResponse version="1.0"> <authResponse> <sessionID>a59dfa4a58924bcebd0fcfaa551f0171</sessionID> </authResponse> надо еще попыхтеть над другими вариантами решения поставленной задачи. Всем огромное спасибо. |
|
10.12.2014, 10:59 | #27 |
Талантливый разгвоздяй
|
Цитата:
Вот есть похожий на ваш пример сервис - если отправить запрос на https://telenorcsms.com.pk:27677/cor...x&password=xxx, то он возвращает XML ответ, похожий на ваш: X++: <?xml version="1.0" encoding="UTF-8" ?> <corpsms> <command>Auth_request</command> <data>Error 200</data> <response>Error</response> </corpsms> X++: static void MicrosoftWebRequestSample(Args _args) { System.Net.WebRequest webRequest; System.Net.ICredentials credentialCache; System.Net.HttpWebResponse httpWebResponse; System.IO.Stream stream; System.IO.StreamReader streamReader; str postData; System.Byte[] byteArray; System.Text.Encoding encodingUTF8; str statusDescription; str responseFromServer; ; //1. Создать запрос. webRequest = System.Net.WebRequest::Create("https://telenorcsms.com.pk:27677/corporate_sms2/api/auth.jsp?msisdn=xxxx&password=xxx"); //этот веб-сервис отправляет в ответ данные, которые были направлены ему. webRequest.set_Method("POST"); //2. Ввести данные к отправке и ковертировать их в массив байтов postData = ":27677/corporate_sms2/api/auth.jsp?msisdn=xxxx&password=xxx"; encodingUTF8 = System.Text.Encoding::get_UTF8(); byteArray = encodingUTF8.GetBytes(postData); //3. Изменить свойства запроса: ContentType, ContentLength. //webRequest.set_ContentType("application/x-www-form-urlencoded"); text/xml;charset=UTF-8 webRequest.set_ContentType("text/xml;charset=UTF-8"); webRequest.set_ContentLength(byteArray.get_Length()); //4. Если требуется авторизация, то указать учетные данные. credentialCache = System.Net.CredentialCache::get_DefaultCredentials(); //5. Получить поток с данными. stream = webRequest.GetRequestStream(); //6. Записать поток данных. stream.Write(byteArray, 0, byteArray.get_Length()); //7. Закрыть поток. stream.Close(); //8. Получить ответ. httpWebResponse = webRequest.GetResponse(); //9. Отобразить статус. statusDescription = httpWebResponse.get_StatusDescription(); info(strFmt("%1", statusDescription)); //10. Получить поток с данными. stream = httpWebResponse.GetResponseStream(); //11. Открыть поток с помощью StreamReader. streamReader = new System.IO.StreamReader(stream); //12. Прочитать содержимое. responseFromServer = streamReader.ReadToEnd(); //13. Вывести содержимое в инфолог. info(strFmt("%1", responseFromServer)); //14. Закрыть все. streamReader.Close(); stream.Close(); httpWebResponse.Close(); } |
|
|
За это сообщение автора поблагодарили: Logger (3). |
10.12.2014, 11:44 | #28 |
Талантливый разгвоздяй
|
Цитата:
Сообщение от smailik
Что бы я не запихивал в postData в infolog выводится
ОК <!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <link rel="shortcut icon" href="/mxm/favicon.ico" type="image/x-icon"/> <script type="text/javascript" src="/mxm-commons/commons/app-template.js" charset="utf-8"></script> <script type="text/javascript" src="/mxm/mxm-api/file/app-template.js" charset="utf-8"></script> <script type="text/javascript"> var application = null; var MX_DIR = "/mxm/"; var MXM_DIR = "/mxm/"; var MX_DEBUG_MODE = false; </script> <link rel="stylesheet" type="text/css" href="/mxm-commons/ext/resources/css/ext-all.css?3.3.1.GT rev:49875"/> <link rel="stylesheet" type="text/css" href="/mxm-commons/packed/commons-main.css?3.3.1.GT rev:49875"/> <script type="text/javascript" src="/mxm-commons/ext/adapter/ext/ext-base.js?3.3.1.GT rev:49875"></script> <script type="text/javascript" src="/mxm-commons/ext/ext-all/ext-all.js?3.3.1.GT rev:49875"></script> <script type="text/javascript" src="/mxm-commons/packed/commons-main.js?3.3.1.GT rev:49875"></script> <script type="text/javascript" src="/mxm-commons/packed/commons-login-form.js?3.3.1.GT rev:49875"></script> <script type="text/javascript" src="/mxm-commons/packed/commons.js?3.3.1.GT rev:49875"></script> <title>Maxoptra Management Application [3.3.1.GT rev:49875]</title> <script type="text/javascript"> eventManager = new mx.app.widget.EventManager(); Ext.onReady(function () { application = new mx.Application(); }); </script> </head> <body> <form id="history-form" class="x-hidden" action=""> <input type="hidden" id="x-history-field"/> <iframe id="x-history-frame"></iframe> </form></body> </html> |
|
12.12.2014, 12:46 | #29 |
Участник
|
Попробовал вот так вот
X++: urlReq = "http://review.maxoptra.com/rest/2/authentication/createSession?accountID=XXX&user=XXX&password=XXX"; //1. Создать запрос. webRequest = System.Net.WebRequest::Create(urlReq); webRequest.set_Method("POST"); //2. Ввести данные к отправке и ковертировать их в массив байтов postData = ""; encodingUTF8 = System.Text.Encoding::get_UTF8(); byteArray = encodingUTF8.GetBytes(postData); <?xml version='1.0' encoding='UTF-8' standalone='yes'?> <apiResponse version="1.0"> <authResponse> <sessionID>EA5A18860C8E2273931990C8505096F9</sessionID> </authResponse> </apiResponse> |
|
|
За это сообщение автора поблагодарили: Kabardian (1). |
12.12.2014, 13:25 | #30 |
Участник
|
|
|
12.12.2014, 14:43 | #31 |
Участник
|
|
|
24.03.2015, 19:37 | #32 |
Талантливый разгвоздяй
|
В AX 2012 также см. класс для работы с веб-запросами \Classes\RetailCommonWebAPI.
|
|
|
За это сообщение автора поблагодарили: macklakov (3). |