Forum

Devolver Response S...
 
Notifications
Clear all

El foro de caduceus.es ha sido migrado a meditecs.com. Descubre más sobre el cambio en este post.

🇬🇧 English speaker? Go to Meditecs forums in English!

[Closed] Devolver Response Status Code

12 Posts
2 Users
0 Reactions
3,833 Views
(@zarcus)
Active Member
Joined: 7 years ago
Posts: 10
Topic starter   [#94]

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!



   
(@ricber)
Trusted Member
Joined: 8 years ago
Posts: 44
 

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.

 



   
(@zarcus)
Active Member
Joined: 7 years ago
Posts: 10
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!


   
(@ricber)
Trusted Member
Joined: 8 years ago
Posts: 44
 

@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.

 



   
(@zarcus)
Active Member
Joined: 7 years ago
Posts: 10
Topic starter  

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



   
(@ricber)
Trusted Member
Joined: 8 years ago
Posts: 44
 

@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.

 



   
(@zarcus)
Active Member
Joined: 7 years ago
Posts: 10
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!!


   
(@ricber)
Trusted Member
Joined: 8 years ago
Posts: 44
 

@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!

 



   
(@zarcus)
Active Member
Joined: 7 years ago
Posts: 10
Topic starter  

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



   
(@ricber)
Trusted Member
Joined: 8 years ago
Posts: 44
 

@zarcus 

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

 



   
(@zarcus)
Active Member
Joined: 7 years ago
Posts: 10
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!!!!


   
(@ricber)
Trusted Member
Joined: 8 years ago
Posts: 44
 

@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!

 



   
Share:
Scroll to Top