Estoy desarrollando la conexión a un webservice de un proveedor y no consigo hacer la llamada. En soporte del proveedor me dicen que la llamada es correcta, pero que segurmanete no tenga desactivado CURLOPT_SSl_VERIFYHOST o CURLOPT_SSL_VERIFYPEER. La url a la que tengo que hacer la peticion es de la forma https://extranet.proveedor.com/api/pedidoWeb…
La verdad es que no tengo ni idea de donde tengo que poner esas opciones. El código que estoy utilizando es muy sencillo:
importClass("XMLHttpRequest");
var cURL = theRoot.varToString("XHR_URL")
var lAsincrono = false
var xhr = new XMLHttpRequest()
xhr.timeout = 15000
xhr.responseType = ""
xhr.open("POST", cURL, lAsincrono, "", "");
xhr.send()
theRoot.setVar("XHR_SALIDA", xhr.response)
theRoot.setVar("_NERROR", xhr.errorCode)
theRoot.setVar("_NSTATUS", xhr.status)
Esas son opciones de la librería Curl.
Seguramente en soporte del webservice han supuesto que estás usando esta librería con código PHP.
Esas opciones tienen que ver con la negociación SSL entre cliente y servidor.
Prueba a realizar la conexión usando una línea de comando de la librería Curl para comprobar que tu equipo negocia correctamente la conexión segura.
Parece ser que la clase XMLHttpRequest del API de Velneo tiene sus peculiaridades respecto a las conexiones seguras y los certificados TSL/SSL.
Ante la falta de documentación y buenos ejemplos, no te queda más remedio que acudir a Soporte.
Me han confirmado en soporte que xmlhttprequest nenesita un https válido. Me han dicho que con curl sí puedo deasctivar la comprobación. Me he descargado el tutor de vcurl y cuando lo ejecuto me da un error.
“No se ha podido cargar la libreria Nombre: vCurlDll.dll ID: VCURL_W”
¿Alguien tiene algún ejemplo de un post realizado con curl?
Ya he comprobado que desde la línea de comandos me funciona la llamada.
El problema era que tenía que copiar las librerías de curl a la carpeta de Windows. De todas formas, la solución tampoco me sirve porque la conexión con el proveedor se hace con una tarea programada en el vServer y ahí no puedo hacer uso de librerías externas.
Al final me va a tocar tener un cliente que se ejecute periódicamente y haga la conexión mediante curl. Creo que, en este caso, voy a optar por utilizar curl en línea de comandos.
Lo que devuelve el comando cUrl (html, json, xml, …) queda guardado en el fichero que has indicado.
Contiene lo mismo que tendríamos en la propiedad responseText de la clase xmlHttpRequest del API de Velneo.
Si te atrancas con algo puedo preparar un ejemplo.