Ejemplo de cómo llamar desde el ERP a una webapi y obtener los resultados
Código VB6:
' Ejemplo de llamada POST a web service externa ' Gentileza de Miguel Angel (OLINET) Sub MainPost() DataToSend = "IPAddress=xx.xx.xx.xx" Dim request,xmlhttp ,url,xmldoc Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP") url = "http://sagec-test.mrw.es/MRWEnvio.asmx" request = "<?xml version = '1.0' encoding = 'utf-8'?>" & _ "<soap:Envelope xmlns:soap = 'http://www.midom.org/2003/05/soap-envelope' xmlns:mrw = 'http://www.dom.es/'>" &_ "<soap:Header>" &_ "<AuthInfo xmlns='http://www.dom.es/'>" &_ "<CodigoFranquicia>02708</CodigoFranquicia>" &_ "<CodigoAbonado>041000</CodigoAbonado>" &_ "<CodigoDepartamento>DIARIO As</CodigoDepartamento>" &_ "<UserName>myusername</UserName>" &_ "<Password>*****</Password> " &_ "</AuthInfo>" &_ "</soap:Header>" &_ "<soap:Body>" &_ "<TransmEnvio xmlns = 'http://www.dom.es/'>" &_ "<request>" &_ "<DatosEntrega>" &_ "<Direccion>" &_ "<CodigoTipoVia>CL</CodigoTipoVia>" &_ "<Via>PRUEBAS</Via>" &_ "<Numero>13</Numero>" &_ "<CodigoPostal>05200</CodigoPostal>" &_ "<Poblacion>AREVALO</Poblacion>" &_ "<Provincia></Provincia>" &_ "</Direccion>" &_ "<Nombre>DESTINATARIO DEL ENVÍO</Nombre>" &_ "<Telefono>612345678</Telefono>" &_ "</DatosEntrega>" &_ "<DatosServicio>" &_ "<Fecha>28/06/2017</Fecha>" &_ "<Referencia>INTEGRACIÓN</Referencia>" &_ "<CodigoServicio>0800</CodigoServicio>" &_ "<DescripcionServicio>PROBANDO SAGEC</DescripcionServicio>" &_ "<NumeroBultos>1</NumeroBultos>" &_ "<Peso>2</Peso>" &_ "<Reembolso>O</Reembolso>" &_ "<ImporteReembolso>13,13</ImporteReembolso>" &_ "</DatosServicio>" &_ "</request>" &_ "</TransmEnvio>" &_ "</soap:Body>" &_ "</soap:Envelope>" Set oXMLHttp = CreateObject("MSXML2.ServerXMLHTTP") oXMLHttp.open "POST", url, False oXMLHttp.SetRequestHeader "Content-Type", "text/xml; charset = utf-8" oXMLHttp.send request MsgBox oXMLHttp.Responsetext End Sub ' Ejemplo de llamada GET a web service externa ' Gentileza de Miguel Angel (OLINET) Sub MainGet() DataToSend = "IPAddress=xx.xx.xx.xx" Dim xmlhttp Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP") xmlhttp.open "GET", "http://www.webservicex.net/geoipservice.asmx/GetGeoIP?IPAddress=xx.xx.xx.xx" xmlhttp.setRequestHeader "Content-Type", "application/soap+xml; charset = utf-8" xmlhttp.send () Set xmldoc = xmlhttp.responsexml.DocumentElement Set nodosxml = xmldoc.childnodes i = 0 For Each Elemento In nodosxml If elemento.nodename = "IP" Then MsgBox elemento.text End If MsgBox elemento.text Next MsgBox xmlhttp.Responsexml.text Set xmlhttp = Nothing End Sub
Código C#:
Script, Método 1:
using AhoraCore; using System; using System.Net.Http; using static AhoraCore.VBA.Interaction; namespace AhoraScriptsVacia { public class Script_17 : AhoraOCX.AhoraBaseScript { public void Main() { try { string url = "http://sagec-test.mrw.es/MRWEnvio.asmx"; string datosAEnviar = "<?xml version = '1.0' encoding = 'utf-8'?>" + "<soap:Envelope xmlns:soap = 'http://www.midom.org/2003/05/soap-envelope' xmlns:mrw = 'http://www.dom.es/'>" + "<soap:Header>" + "<AuthInfo xmlns='http://www.dom.es/'>" + "<CodigoFranquicia>02708</CodigoFranquicia>" + "<CodigoAbonado>041000</CodigoAbonado>" + "<CodigoDepartamento>DIARIO As</CodigoDepartamento>" + "<UserName>myusername</UserName>" + "<Password>*****</Password> " + "</AuthInfo>" + "</soap:Header>" + "<soap:Body>" + "<TransmEnvio xmlns = 'http://www.dom.es/'>" + "<request>" + "<DatosEntrega>" + "<Direccion>" + "<CodigoTipoVia>CL</CodigoTipoVia>" + "<Via>PRUEBAS</Via>" + "<Numero>13</Numero>" + "<CodigoPostal>05200</CodigoPostal>" + "<Poblacion>AREVALO</Poblacion>" + "<Provincia></Provincia>" + "</Direccion>" + "<Nombre>DESTINATARIO DEL ENVÍO</Nombre>" + "<Telefono>612345678</Telefono>" + "</DatosEntrega>" + "<DatosServicio>" + "<Fecha>28/06/2017</Fecha>" + "<Referencia>INTEGRACIÓN</Referencia>" + "<CodigoServicio>0800</CodigoServicio>" + "<DescripcionServicio>PROBANDO SAGEC</DescripcionServicio>" + "<NumeroBultos>1</NumeroBultos>" + "<Peso>2</Peso>" + "<Reembolso>O</Reembolso>" + "<ImporteReembolso>13,13</ImporteReembolso>" + "</DatosServicio>" + "</request>" + "</TransmEnvio>" + "</soap:Body>" + "</soap:Envelope>"; // POST using (var httpClient = new HttpClient()) { var postData = new StringContent(datosAEnviar); // Realizar la solicitud POST de forma síncrona var response = httpClient.Send(new HttpRequestMessage(HttpMethod.Post, url) { Content = postData }); // Procesar la respuesta var responseBody = response.Content.ReadAsStringAsync().Result; MsgBox("Respuesta POST: " + responseBody); } // GET using (var httpClient = new HttpClient()) { // Realizar la solicitud GET de forma síncrona var response = httpClient.Send(new HttpRequestMessage(HttpMethod.Get, url)); // Procesar la respuesta var responseBody = response.Content.ReadAsStringAsync().Result; MsgBox("Respuesta GET: " + responseBody); } } catch (Exception ex) { MsgBox(ex.Message, VbMsgBoxStyle.vbCritical, "ERROR"); } } } }
Script, Método 2:
using System.IO; using System.Net; using System.Text; using static AhoraCore.VBA.Interaction; namespace AhoraScriptsVacia { public class Script_17 : AhoraOCX.AhoraBaseScript { public void Main() { string endpointUrl = "http://sagec-test.mrw.es/MRWEnvio.asmx"; string requestXml = "<?xml version = '1.0' encoding = 'utf-8'?>" + "<soap:Envelope xmlns:soap = 'http://www.midom.org/2003/05/soap-envelope' xmlns:mrw = 'http://www.dom.es/'>" + "<soap:Header>" + "<AuthInfo xmlns='http://www.dom.es/'>" + "<CodigoFranquicia>02708</CodigoFranquicia>" + "<CodigoAbonado>041000</CodigoAbonado>" + "<CodigoDepartamento>DIARIO As</CodigoDepartamento>" + "<UserName>myusername</UserName>" + "<Password>*****</Password> " + "</AuthInfo>" + "</soap:Header>" + "<soap:Body>" + "<TransmEnvio xmlns = 'http://www.dom.es/'>" + "<request>" + "<DatosEntrega>" + "<Direccion>" + "<CodigoTipoVia>CL</CodigoTipoVia>" + "<Via>PRUEBAS</Via>" + "<Numero>13</Numero>" + "<CodigoPostal>05200</CodigoPostal>" + "<Poblacion>AREVALO</Poblacion>" + "<Provincia></Provincia>" + "</Direccion>" + "<Nombre>DESTINATARIO DEL ENVÍO</Nombre>" + "<Telefono>612345678</Telefono>" + "</DatosEntrega>" + "<DatosServicio>" + "<Fecha>28/06/2017</Fecha>" + "<Referencia>INTEGRACIÓN</Referencia>" + "<CodigoServicio>0800</CodigoServicio>" + "<DescripcionServicio>PROBANDO SAGEC</DescripcionServicio>" + "<NumeroBultos>1</NumeroBultos>" + "<Peso>2</Peso>" + "<Reembolso>O</Reembolso>" + "<ImporteReembolso>13,13</ImporteReembolso>" + "</DatosServicio>" + "</request>" + "</TransmEnvio>" + "</soap:Body>" + "</soap:Envelope>"; // Crear la solicitud HTTP POST HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endpointUrl); request.Method = "POST"; request.ContentType = "text/xml;charset=utf-8"; // Convertir la solicitud en bytes byte[] requestData = Encoding.UTF8.GetBytes(requestXml); // Configurar los datos de la solicitud request.ContentLength = requestData.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(requestData, 0, requestData.Length); requestStream.Close(); try { // Obtener la respuesta del servicio HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream()); string responseXml = reader.ReadToEnd(); // Procesar la respuesta MsgBox("Respuesta del servicio: " + responseXml); } catch (WebException ex) { // Manejar cualquier error de solicitud MsgBox("Error de solicitud: " + ex.Message); } } } }
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo