1

http-outboundgateway を使用して REST 呼び出しを行うクライアントがあります

<int-http:outbound-gateway request-channel="glNewsRequestChannel"
url="${gl.url}" http-method="GET" expected-response-type="java.lang.String"
reply-channel="glHeaderEnricher" charset="iso-8859-1">
<int-http:uri-variable name="site_code"
expression="payload" />
</int-http:outbound-gateway>

応答が取得され、ログに記録されてファイルに保存されると、特定のエンコーディングでは基本的に変換できない、ごちゃごちゃした文字が表示されます。ファクトリが指定されていない限り、Java URLconnection クラスを使用して REST 呼び出しを行うことについて言及している SI ドキュメントを参照しました。問題を絞り込むために、小さな Java プログラムを作成し、すぐに使用できるテンプレートやゲートウェイを使用せずに URLconnection クラスを直接使用しました。すべての特殊文字を正常にフェッチしてレンダリングします。httpライブラリをApacheする別のスタンドアロンアプリを試してみましたが、キャラクターを取得することもできました。SI の一部として不足している構成はありますか?

4

1 に答える 1

2

さらに調査を進めると、間違ったメッセージ コンバーターを使用していたことが明らかになりました - byte[] を使用する場合、文字列コンバーターを使用する代わりに、bytearraymessageconverter に従って - 期待どおりに動作します。

    <int-http:outbound-gateway request-channel="glNewsRequestChannel" url="${gl.url}" 
    http-method="GET" message-converters="byteArrayHttpMessageConverter" 
    expected-response-type="byte[]" reply-channel="glHeaderEnricher" 
    charset="iso-8859-1">  <int-http:uri-variable name="site_code" 
    expression="payload" /> 
   </int-http:outbound-gateway>

byteArrayHttpMessageConverter は次のように定義できます。

    <bean id="byteArrayHttpMessageConverter"
    class="org.springframework.http.converter.ByteArrayHttpMessageConverter">
    </bean>
于 2012-10-15T17:17:22.637 に答える