2014-11-26 2 views
1

Я новичок в интеграции весны, и я разрабатываю прокси-сервер с ним.Как обработчик исходящего-шлюза json строка с удаленного сервера

вот моя конфигурация:

<int-http:inbound-gateway id="testInboundGateway" 
          supported-methods="GET" 
          request-channel="test-request" 
          extract-reply-payload="false" 
          reply-channel="test-reply" 
          path="/user/{id}/info" 
          reply-timeout="50000"> 
    <int-http:header name="id" expression="#pathVariables.id"/> 
</int-http:inbound-gateway> 


<int-http:outbound-gateway id="testOutboundGateway" 
          http-method="GET" 
          request-channel="test-request" 
          reply-channel="test-process" 
          url="http://remoteserver/{id}.json" 
          extract-request-payload="false" 
          expected-response-type="java.lang.String" 
          reply-timeout="50000" 
          charset="UTF-8"> 
    <int-http:uri-variable name="id" expression="headers.id" /> 
</int-http:outbound-gateway> 

<int:service-activator id="activator" 
         input-channel="test-process" 
         output-channel="test-reply" 
         ref="hubBean" 
         method="process"></int:service-activator> 

<bean id="hubBean" class="com.test.testhub.HubService"/> 

Мой удаленный сервер возвращает JSON с содержанием типа: приложения/JSON, кодировка = UTF-8

Однако моя служба боб получить такую ​​строку: \ u001F \ b \ u0000 \ u0000 .....

Я не знаю, что это. Я пытался расшифровать его с помощью gzip, но формат неправильный. , чтобы каждый мог сказать мне, как я могу получить фактический результат?

+0

Можете ли вы использовать сетевой сниффер (wirecark или eclipse tcp/ip monitor и т. Д.), Чтобы взглянуть на фактический контент? –

+0

Привет, удаленный сервер возвращает аккуратный json, поскольку я вызываю его напрямую. Должно быть что-то неправильно с кодировкой или преобразованием ... – crazyindark

ответ

0

Так как мы уже знаем, что ваш ответ от этого удаленного сервиса gzipped, даже если это JSON, есть два пути преодоления на вопрос и иметь надежное решение:

  1. Принимает ответ как byte[] (вы сделайте это сейчас) и распакуйте вручную.

  2. Использовать HttpComponentsClientHttpRequestFactory инъекции до <int-http:outbound-gateway> с DecompressingHttpClient Ссылка декоратора.

Я думаю, что второй лучше.

0

Кажется, проблема в дистанционном ответе gzipped, и String, спрятанная, уже ошибочна, так что я не могу ее распаковать. Я должен установить ожидаемый-response-type = "byte []", чтобы я мог распаковать его по коду.

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