2015-10-06 3 views
0

Я пытаюсь вызвать веб-службу REST через Spring Integration, т. Е. Spring Integration будет выступать в роли моего клиента в веб-службе REST. Тем не менее, я должен добавить params к ws url и добавить json-объект в качестве параметра. Для этого я попробовал следующую конфигурацию:Весенняя интеграция: как отправить параметры запроса с помощью http outbound gateway

<int:enricher input-channel="inputChannel" request-channel="quakeinfotrigger.channel"> 
    <int:property name="info" expression="payload"/> 
</int:enricher> 

<int-http:outbound-gateway id="quakerHttpGateway" 
    request-channel="quakeinfotrigger.channel" 
    url="http://ffff.ff/gg/rest/put/{tel_number}" 
    http-method="PUT" 
    expected-response-type="java.lang.String" 
    charset="UTF-8" 
    reply-timeout="5000" 
    reply-channel="quakeinfo.channel"> 
    <int-http:uri-variable name="tel_number" expression="payload.getNumTelefono()"/> 
</int-http:outbound-gateway> 

tel_number не передается как пары и Можете ли вы дать мне решение передать в качестве параметров строки через URL и объект JSON.

ответ

1

Что вы подразумеваете под «tel_number не передается как параметр»?

Я просто изменил http sample таким образом:

<int:gateway id="requestGateway" 
      service-interface="org.springframework.integration.samples.http.RequestGateway" 
      default-request-channel="requestChannel"> 
    <int:default-header name="content-type" value="application/json" /> 
</int:gateway> 

<int:channel id="requestChannel"/> 

<int-http:outbound-gateway request-channel="requestChannel" 
          url="http://localhost:8080/http/receiveGateway/{tel_num}" 
          http-method="POST" 
          expected-response-type="java.lang.String"> 
    <int-http:uri-variable name="tel_num" expression="'foo'" /> 
</int-http:outbound-gateway> 

, и она работала, как и ожидалось - на стороне сервера, я вижу

No mapping found for HTTP request with URI [/http/receiveGateway/foo] 

Это не ясно, что вы спрашиваете о JSON; если вы отправляете POJO в полезную нагрузку и устанавливаете заголовок content-type в 'application/json' (используйте заголовок-enricher) и помещаете банки Jackson в путь класса, он будет работать.

+0

Как пройти {tel_num}? Это динамическая переменная. Я должен передать его программно. И конечная точка не является шлюзом, а входящим канальным адаптером – NAZEHA

+0

Не имеет значения, что начинает поток; как я сказал в asnwer, вы можете использовать '' для установки заголовка 'content-type'. Ваше выражение должно работать (если оно действительно), я просто использовал буквальное выражение. Мне нужно знать, что вы подразумеваете под «не передается». –

+0

это означает: как заполнять переменные URI {tel_number}, я отправляю его в заголовок? – NAZEHA

Смежные вопросы