Tengo una ruta Camel que llama a un servicio web, y uno de los parámetros que espera este servicio es un parámetro de URL que contiene una lista de valores, es decir. p1 en myhost/myuri?p1=foo&p1=bar.

Lo estoy poniendo en un URI toD, ya que los valores de los parámetros deben ser dinámicos, es decir. <camel:toD uri="http4://myhost/myuri?p1=foo&amp;p1=bar" > (se omitieron los parámetros y variables de Camel por razones de brevedad).

Camel está convirtiendo esto a p1=%5Bfoo%2C+bar%5D (codificado en URL p1=[foo, bar]), que no es aceptado por el servicio de backend. No tengo control sobre este servicio de backend y no puedo esperar que su interfaz cambie en el futuro.

¿Hay alguna forma de que pueda obligar a Camel a llamar al servicio de backend de la forma que yo quiera, en lugar de recopilar el parámetro con varios valores en un formato de matriz?

0
willyjoker 10 oct. 2019 a las 18:41

1 respuesta

La mejor respuesta

Otro enfoque sería usar el encabezado CamelHttpQuery junto con to, no el toD punto final

<setHeader headerName="CamelHttpQuery"><simple>p1=foo&amp;p1=bar</simple></setHeader>
<to uri="http4://myhost/myuri">
1
Greenev 15 oct. 2019 a las 14:12