soap


([N1] robertocofiex) #1

HOla Amigos, no tengo ni idea de SOAP pero me preguntan sobre el uso de un webservice mediante soap.

Entiendo una estructura etiquetada XML que lleva parámetros, pero no se como llamarlo desde velneo o si puedo hacerlo desde HTTP como post y get de un form.

Podríais decirme como puedo hacer las llamadas y recoger las respuestas para parsearlas despues.

Saludos. Roberto.


([N1] wikan) #2

Te has mirado las últimas novedades de la plataforma??

Tienes una nueva clase para hacer peticiones, además podrías usar curl como comando, podrías usar la dll vCurl. Opciones tienes.


([N1] leonardo daniel velazquez fuentes) #3

Hola que tal, pues fue algo con lo que me tope, para mi mala suerte el webservice contratado estaba en .net y maneja algunos arreglos (arrays) y nunca pude lograrlo con el metodo que me interesaba, pero si con otros metodos sencillos.

si tienes Chrome instalate la aplicacion RestInSoap
https://chrome.google.com/webstore/detail/restinsoap-soap-rest-clie/eipdnjedkpcnlmmdfdkgfpljanehloah?utm_source=chrome-ntp-icon

luego la abres, le das Create New Project y le pones un nombre, luego entras y le das al boton Create Service y te preguntara si es SOAP o REST, seleccionas SOAP y pegas el link del webservice, por ejemplo http://www.webservicex.net/globalweather.asmx?WSDL

tambien abrelo en otra ventana de navegador para que veas toda la descripcion del servicio, los servicios de pago, se envia como parametro el usuario y password.

ok de regreso a RestInSoap ya pegaste la URL, ponle un nombre al servicio por ejemplo Global Weather y le das “ADD” y te abre de un lado los metodos disponibles, selecciona GetWeather y dale “Create Request” y en la pantalla aparecera

<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:www="http://www.webserviceX.NET">
  <x:Header/>
  <x:Body>
    <www:GetWeather>
      <www:CityName>?</www:CityName>
      <www:CountryName>?</www:CountryName>
    </www:GetWeather>
  </x:Body>
</x:Envelope>

Ves el simbolo " ? " ese lo sustituyes por el dato que vas a enviar, en mi caso, puse Saltillo en cityname y Mexico en CountryName, le das al boton “SEND” y veras que te envia un Response XML con los datos que encontro… ya con eso sabes si el webservice esta funcionando… ahora en javascript por ahi en la red andan librerias para pasar XML a Json o como lo quieras manejar…

En soporte me pasaron esta url para mandar llamar a un webservice desde javascript XMLHttpRequest
https://pavanarya.wordpress.com/2012/05/20/calling-a-web-service-from-javascript-using-xmlhttprequest/

PEROOOOOO
A mi no me sirvio nada de todo lo que te dije, ya que el webservice que yo utilizo forzosamente debe recibir un array de datos y no se puede especificar en XML asi que la unica opcion que me dieron fue hacer la llamada desde .net, asi que hice un progrsma en C# para llamar al servicio, bajar los datos a una b.d. sqlite y luego pasarlos a Velneo…

Espero que tu tengas exito y no sufras como yo sufri

[quote quote=43894]HOla Amigos, no tengo ni idea de SOAP pero me preguntan sobre el uso de un webservice mediante soap.

Entiendo una estructura etiquetada XML que lleva parámetros, pero no se como llamarlo desde velneo o si puedo hacerlo desde HTTP como post y get de un form.

Podríais decirme como puedo hacer las llamadas y recoger las respuestas para parsearlas despues.

Saludos. Roberto.

[/quote]

([N1] wikan) #4

A lo mejor me estoy equivocando, pero que tiene que ver xml con arrays.
XML es un formato de intercambio, una similitud al array podría ser:
<usuarios>
<usuario>1</usuario>
<usuario>2</usuario>
<usuario>3</usuario>
</usuarios>

El servicio recibe eso y si lo tiene que convertir en un array que lo convierta. Otra cosa es que no sea un webservices como tal y te están obligando a usar sus librerías.


([N1] leonardo daniel velazquez fuentes) #5

Pues es un webservice soap a medias, ya que otros métodos que reciben parámetros sencillos, como localidades de un estado, donde envío usuario, password, estado, funciona bien… Pero en fin… A ver si más adelante con mas calma encuentro otro proveedor que de soporte mejor a rest json para hacerlo directo de velneo


([N4] arturomiranda) #6

Te recomiendo que rastrees la petición con fiddler o con wireshark , para que veas exactamente cómo debes enviar los parámetros , hasta ahora no conozco un webservices que reciba como parámetro un array, normalmente en SOAP es un XML o en su defecto strings

Saludos


([N1] leonardo daniel velazquez fuentes) #7

Hola Arturo, excelente recomendacion gracias… tenia el fiddler, pero se me facilito mas con wireshark, vi un video tutorial en youtube, entonces me enfoque en el puerto 80 protocolo http y xml y asi pude ser mi programa .net que era lo que le enviaba a la hora que yo formaba el array de ciudades inicio, destino y paradas intermedias…y alcanze a rescatar algo del XML y apartir de el ya pude formar lo que necesitaba de enviar varias ciudades… ya probe el xml que estructure con RestInSoap y funciona perfecto…
mañana hare la prueba en velneo a ver si lo logro y pasarlo a json supongo sera mas sencillo manipularlo asi para meterlo a mis tablas en velneo y me ahorro la molestia de depender de que las pc’s tengan el .net la version corespondiente, etc, etc.

GRACIAS… :wink:

[quote quote=43905]Te recomiendo que rastrees la petición con fiddler o con wireshark , para que veas exactamente cómo debes enviar los parámetros , hasta ahora no conozco un webservices que reciba como parámetro un array, normalmente en SOAP es un XML o en su defecto strings

Saludos

[/quote]

([N4] eduarchap) #8

Buenas noches Sres.

Pues realmente en las novedades de la 7.18 existe la clase necesaria para esto, sin embargo, aun no la he podido hacer trabajar perfectamente en un proyecto en particular que tengo. En dicho proyecto consumo un WebServvice SOAP, y lo tengo asi desde la 17. Vale acotar que para lograr esto, me toco basarme en PHP debido a que dicho WebService necesariamente recibia arrays y otras condiciones especificas.

Si necesitan ayuda, pueden consultarme y con gusto les guiare. Conociendo la estructura del WebService y sus clases y metodos, es realmente sencilla la comunicacion.

Saludos.

PD: mi correo eduarchap1988@gmail.com


([N3] alfabeta) #9

Buenas noches.

Aqui coloco un ejemplo SOAP desde velneo, realizado desde un manejador de evento.

importClass(“XMLHttpRequest”);

var url=‘http://agendamiento.hospitalariasec.org/consultaragenda.aspx?WSDL’;
var xhr = new XMLHttpRequest();

xhr.open(“POST”, url, true);
xhr.setRequestHeader(‘Content-Type’, ‘text/xml’);

// build SOAP request
var sr = ‘<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:agen=“Agenda”>’+
‘<soapenv:Header/>’ +
‘<soapenv:Body>’ +
‘<agen:ConsultarAgenda.Execute>’ +
‘<agen:Desdefecha>01012017</agen:Desdefecha>’ +
‘<agen:Hastafecha>15012017</agen:Hastafecha>’ +
‘</agen:ConsultarAgenda.Execute>’ +
‘</soapenv:Body>’ +
‘</soapenv:Envelope>’ ;

alert(sr)
xhr.send(sr);

// Al ser una llamada asíncrona, esperamos a que la petición termine
while(xhr.readyState != 4) { // 4: Done
xhr.processEvents();
}

if ( (xhr.errorCode==0) && (xhr.status == 200) ) {
alert((xhr.response));
}

Me apoye en la herramienta SOAPUI: https://www.soapui.org/downloads/soapui.html.

Tengo pendiente utilizar las variables de mi formulario y guardar el archivo en XML en disco.