|
|
#1 |
|
Возьми свет!!!
|
EP: как прочитать данные из IISRequest
DAX 4.0
1. Есть объект IISRequest - как я понимаю данные запроса к странице есть метод binaryRead как эти данные обработать в аксапте в частности интересует нужно прочитать данные XML которые посылаются POST запросом. 2. Написал небольшой класс к которому идет ссылка по WEB меню action X++: static void main(Args _args) { IISRequest req; IISResponse res; ; res = WebSession().response(); res.contentType("text/html "); res.writeTxt(strfmt("<HTML><HEAD></HEAD><BODY><H1>НЕLLO FROM AX,%1</H1></BODY></HTML>",curuserid())); res.end(); }
__________________
Axapta 3.0 sp 5 Oracle ![]() Я могу взорвать вам мозг!!! |
|
|
|
|
#2 |
|
Возьми свет!!!
|
Прочитал данные таким образом
X++: BinData binData;
COMVariant l,buf;
IISRequest request;
XMLDocument xmlDocument;
str s;
XMLElement xmlElement;
int i;
XMLElement xmlValue;
DictClass dictClass;
;
if (!values)
values = new List(Types::String);
request = new IISRequest();
l = new COMVariant();
buf = new COMVariant();
l.long(request.totalBytes());
buf = request.binaryRead(l);
binData = new BinData();
binData.setVariant(buf);
xmlDocument = new XMLDocument();
xmlDocument.loadXml(binData.getStrData());
if (xmlDocument.getElementsByTagName("input").length() > 1)
{
this.addError("Неправильный запрос, количество элементов input > 1");
return;
}
xmlElement = xmlDocument.getElementsByTagName("input").item(0);
callerId = xmlElement.getAttribute("callerId");
axCallMethod = xmlElement.getAttribute("axCallMethod");
controlType = xmlElement.getAttribute("controlType");
inputType = xmlElement.getAttribute("type");
for (i=0;i<xmlElement.childNodes().length();i++)
{
xmlValue = xmlElement.childNodes().item(i);
values.addEnd(xmlValue.innerText());
}нужно для ajax post запросов с XML данными и ответом, просто веб-служба в этом отношении очень неудобна
__________________
Axapta 3.0 sp 5 Oracle ![]() Я могу взорвать вам мозг!!! |
|
|
|
|
#3 |
|
Developer
|
Цитата:
В AX 2009 у urlMenuItem есть свойство RemoveNavigation, если его установить в true, параметр NONAV=1 добавляется в url автоматом. |
|
|
|
| За это сообщение автора поблагодарили: sukhanchik (2), Murlin (1). | |
|
|
#4 |
|
Возьми свет!!!
|
Цитата:
сооовсем чуть чуть его изменив X++: <%@ Page Language="C#"%> <%@ Assembly Name="Microsoft.Dynamics.BusinessConnectorNet, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null" %> <%@ Assembly Name="Microsoft.Dynamics.WebParts, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null" %> <%@ Import Namespace="Microsoft.Dynamics.BusinessConnectorNet" %> <%@ Import Namespace="Microsoft.Dynamics.WebParts" %> <script runat="server"> void Page_Load(object sender, EventArgs e) { ISession session = null; try { session = SessionFactory.CreateInstance(HttpContext.Current); if (session != null) { session.InitWeb(HttpContext.Current, Page.IsPostBack); string axaptaElement = "<!--AXAPTA TYPE=\"EPAjaxService\" WebletItemName=\"EPAjaxService\" -->"; using (IWebPortalExecutionEngine engine = WebPortalExecutionEngineFactory.CreateInstance(session)) { // EPDocuGetWebLet writes directly to the output stream engine.RunWebletItem(axaptaElement, "", "", "", this.ClientID); } Response.Flush(); } } catch (Exception ex) { Response.Clear(); Response.AddHeader("content-type", "application/xml; charset=utf-8"); Response.Write("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); Response.Write("<error id=\"1\">" + ex.Message + ex.StackTrace + "</error>"); } finally { if (session != null) { session.Release(HttpContext.Current); } } } </script> я доволен :-D Запрос в XMLHtttpRequest отправляю прямо на страницу aspx получается довольно быстро, вот только баааальшая заморочка была написать javascript с обработкой полученного ответа сервера и подменой-изменение html контролов зато теперь у меня данные в форме клиентов для адреса подтягиваются из кладра аксапты
__________________
Axapta 3.0 sp 5 Oracle ![]() Я могу взорвать вам мозг!!! |
|
|
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|