He estado tratando de consumir un servicio web simple creado con GeneXus, debe recibir una variable "nPais" (entero) y responder un objeto con la propiedad de texto en función del número dado. Simplemente no funciona. He confirmado que el servicio funciona al probarlo con soapUI (agregando el WSDL), pero al intentar consumirlo con cartero responde la estructura correcta, pero con la propiedad de texto vacía.
Esta es mi pestaña fuente del WS.
&sdtServicio = New() &Servicio.SetEmpty() Do Case Case &nPais = 1 &sdtServicio.Texto = "Hola México" Case &nPais = 2 &sdtServicio.Texto = "Hola Argentina" Otherwise &sdtServicio.Texto = "HOLA MUNDO" EndcaseEsto está en la pestaña de reglas
Parm(in:&nPais, out:&sdtServicio);Y así es como he estado tratando de consumir el servicio en JS.
function getGreeting(value) { var myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); myHeaders.append("Cookie", "GX_CLIENT_ID=54f383cc-0719-444d-a252-c8799c1202a0"); var raw = JSON.stringify({ "nPais": 1 }); var requestOptions = { method: 'POST', headers: myHeaders, body: raw, redirect: 'follow' }; fetch("http://localhost:8080/PotentorDesaPotDesa/rest/WSHolaMundo", requestOptions) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error)); }Esta es la respuesta que recibo.
{"sdtServicio":{"Texto":""}}El truco fue solo cambiar el protocolo de SOAP a interno en las propiedades de mi objeto.