Devolver Response S...
 
Avisos
Vaciar todo

Devolver Response Status Code


(@zarcus)
Miembro Activo
Registrado: hace 2 años
Mensajes: 9
Topic starter  

Buenas tardes,

tenemos un problema con unos canales de MIRTH. Ahora mismo, solo podemos devolver error 200 si la conexión es correcta y 500 si es errónea. Pero, si una vez la conexión ha sido correcta y después de ejecutar el código hay algún error, no sabemos como devolver algún código, como por ejemplo un 4xx.

Es posible devolver ese código? como deberíamos hacerlo?

Muchas gracias por adelantado!


Cita
(@ricber)
Miembro Confiable
Registrado: hace 3 años
Mensajes: 43
 

Hola Zarcus,

creo que es relativamente sencillo. Debes generar una variable dentro del canal que contenga el codigo que quereis devoilver, en mi caso suelo utilizar algo asi como ${responseStatusCode}. Una vez tengas esto te vas al source del http listener y le pones al "Response Status Code" la variable, y con eso deberia funcionar. Es importante recordar que debes asignar valor a la variable en cualquier caso. Para hacer eso yo utilizo algo como esto: channelMap.put('responseStatusCode', 200);

Espero que te ayude.

 


ResponderCita
(@zarcus)
Miembro Activo
Registrado: hace 2 años
Mensajes: 9
Topic starter  

@ricber Buenos dias!

Nosotros devolvemos la respuesta al cliente con un return desde un destination que es un 'JavaScript writer'.

Hemos probado todo esto, con el mismo resultado:

1.- (result es la variable donde está todo el JSON que se devuelve), pero asi no devuelve nada.

- channelMap.put("responseString", result); 

- channelMap.put("responseStatusCode",400);

2.- Con esto devuelve lo mismo que con el return de siempre:

 
channelMap.put('responseContentType', 'application/json')
channelMap.put('responseContent', result);
channelMap.put("responseStatusCode",400);
return Packages.com.mirth.connect.server.userutil.ResponseFactory.getSentResponse(result);
o sea, no hace caso al StatusCode = 400
 
Quizás hay algo que nos dejamos?? o no hacemos bien??
 
muchas gracias por la ayuda!

ResponderCita
(@ricber)
Miembro Confiable
Registrado: hace 3 años
Mensajes: 43
 

@zarcus 

creo que lo que haceis es correcto pero os falta que en el source del canal, que seguramente sera un HTTP listener, le indiqueis en la casilla Response Status Code la variable ${responseStatusCode}. ¿Lo habeis indicado asi?.

 

Solo con poner el valor en la variable no os lo cambiara, es necesario cambiar ese campo de la configuracion del source.

 


ResponderCita
(@zarcus)
Miembro Activo
Registrado: hace 2 años
Mensajes: 9
Topic starter  

@ricber Gracias por la info! hemos hecho lo que comentas, pero no hemos tenido suerte... sigue igual.


ResponderCita
(@ricber)
Miembro Confiable
Registrado: hace 3 años
Mensajes: 43
 

@zarcus 

¿has probado a pintar la variable con un logger.info para ver que valor tiene?. Por el flujo de los canales a veces crees que lleva un valor pero al final es otro.

 


ResponderCita
(@zarcus)
Miembro Activo
Registrado: hace 2 años
Mensajes: 9
Topic starter  

@ricber hemos hecho esto:

logger.debug("1- responseStatusCode : " + channelMap.get("responseStatusCode") );
channelMap.put("responseStatusCode",400);
logger.debug("2- responseStatusCode : " + channelMap.get("responseStatusCode") );
al final vemos que el responseStatusCode tiene el  valor 400, pero después ... que return debo hacer para que eso se devuelva al cliente ??? (por si tiene algo que ver este Destination es un 'JavaScript Writer')
 
mil gracias!!
Esta publicación ha sido modificada el hace 3 meses por Zarcus

ResponderCita
(@ricber)
Miembro Confiable
Registrado: hace 3 años
Mensajes: 43
 

@zarcus 

a priori en el return no hace falta que devuelvas nada mas, con el channelMap.put ya has dado el valor 400 a la variable ResponseStatusCode, por lo que si cambias el Source deberia funcionar.

Te adjunto una imagen de mi source para que veas donde va.

A ver si esta vez lo solucionamos, creo que estas muy cerca!

 


ResponderCita
(@zarcus)
Miembro Activo
Registrado: hace 2 años
Mensajes: 9
Topic starter  

@ricber así lo tenemos y nada.... te adjunto captura de pantalla


ResponderCita
(@ricber)
Miembro Confiable
Registrado: hace 3 años
Mensajes: 43
 

@zarcus 

creo que ahora veo lo que pasa. Teneis habilitada la opcion de Response en source settings?

 


ResponderCita
(@zarcus)
Miembro Activo
Registrado: hace 2 años
Mensajes: 9
Topic starter  

@ricber YA LO TENEMOS, tan tonto como:

asi va : channelMap.put("responseStatusCode","400");

asi NO va : channelMap.put("responseStatusCode",400);
 
mil gracias por  la ayuda y tu tiempo!!!!

ResponderCita
(@ricber)
Miembro Confiable
Registrado: hace 3 años
Mensajes: 43
 

@zarcus 

interesante!, nunca lo hubiera dicho. Nosotros usamos la variable en string pero podria haber sido un int sin problemas. Hoy hemos aprendido una cosa mas del universo MIrth...

Buen fin de semana!

 


ResponderCita
Compartir:
Forum