Buenas tardes.
He batallado todo el día intentando pasar un XML desde una aplicación en .NET hacia AX por medio de webservices.
Por favor, apreciaría mucho si alguien pueda responder ya sea con ejemplos, soluciones, o consejos a mi siguiente problema.
Creé y levanté un servicio en AX 2012. A este servicio se le había antes agregado y referenciado una clase.
Esta clase contiene un método que recibe como parámetro un XML y, al recibirlo, lo lee guardando el valor de cada uno de sus elementos en una tabla temporal.
El problema ocurre cuando invocó el método de ese servicio desde cualquier aplicación externa. Por ejemplo, con Visual Studio 2013 creé una interface de cliente de tipo Windows Forms y en la misma interface añadí un botón que lo que hace es ir a consumir el servicio.
En .NET le agregué el siguiente código:
private void button4_Click(object sender, EventArgs e)
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load("C:\\Users\\miUsuario\\Desktop\\MiArchivo.xml");
InterfaceClient.InterfaceApp.InterfaceClientClient servClient = new InterfaceClient.InterfaceApp.InterfaceClientClient();
InterfaceClient.InterfaceApp.CallContext context = new InterfaceClient.InterfaceApp.CallContext();
// En esta línea me marca error
servClient.llenaTabla(context, xDoc.InnerXml);
// En esta línea me marca error
}
Cuando corro el programa en Visual Studio me despliega el siguiente error:
"Referencia a objeto no establecida como instancia de un objeto."
Entiendo muy bien a que se refiere este mensaje que es una excepción indicando que existe algún objeto que está quedando como nulo.
El problema es que desconozco si se trata en .NET o está en AX.
Aquí les paso el código del método del servicio en AX que recibe un XML.
[SysEntryPointAttribute(true)]
public void llenaTabla(str _XML)
{
MiTablaTemporal miTablaTemporal;
XMLDocument doc;
XMLNode rootNode;
int i, j;
XML xml;
;
doc = new XMLDocument();
doc.loadXML(_xml);
rootNode = doc.documentElement();
//El resto del código Lee XML y descarga datos a mi tabla temporal.
miTablaTemporal.insert();
}
}