Мне нужно сделать вызов GET для REST WS со строкой запроса, URI должен быть таким:
http://somehost.com/someservice?parm1=value
Мне нужно присвоить значениепараметр "parm1" тела (обычный pojo с геттерами и сеттерами), так что это верблюжий маршрут:
<setHeader headerName = "Exchange.HTTP_QUERY" id = "queryStringSomeService">
<simple>parm1=${body.someField}</simple>
</setHeader>
<setHeader headerName = "CamelHttpMethod" id = "httpMethodSomeService">
<constant>GET</constant>
</setHeader>
<to id="SOME_SERVICE" uri="http4:/somehost.com/someservice?bridgeEndpoint=true" />
Проблема в том, что строка запроса никогда не добавлялась в uri, а httpнаконец, метод использовал свой POST, хотя я добавил заголовок, чтобы явно установить GET.
Я использую Spring DSL.
На странице http://camel.apache.org/http4.html документации, правила длявыберите метод HTTP установлены;в разделе «Вызов с помощью GET или POST», но, по-видимому, в этом случае они не применяются.
Обновление:
Установка нулевого значения для тела решает проблему изменения метода HTTP наGET, хотя в документации сказано, что вы переопределяете это с помощью заголовка CamelHttpMethod.
Но для строки запроса я перепробовал все варианты;с Exchange.HTTP_URI и с Exchange.HTTP_QUERY ничего из этого не сработало
Это заголовки обмена перед вызовом WS:
Accept: application/json
CamelHttpCharacterEncoding: ISO-8859-1
CamelHttpMethod: GET
CamelHttpQuery: ?parm1=value
CamelHttpResponseCode: 200
CamelHttpResponseText: OK
CamelHttpUri: /someservice
CamelHttpUrl: http://somehost/someservice
CamelRedelivered: false
CamelRedeliveryCounter: 0
Connection: close
Content-Type: application/json;charset=UTF-8
Date: Fri, 14 Sep 2018 16:08:19 GMT
Last-Modified: Thu, 13 Sep 2018 13:33:30 GMT
Set-Cookie: JSESSIONID=YXQkEAUAjh0yWsu4UYwSG8vE.5aa71417-9e93-3be1-99ca-7b4ec1d6f2a0; Path=/ca_tar_tarjeta
Transfer-Encoding: chunked
breadcrumbId: ID-wildfly01-1536931422750-9-23