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 SubCó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