2017-02-14 2 views
0

私はlatin americaのnewspaper xml feedからRSSフィードを取得し、レスポンス本文をJSONに変換するためにhttp呼び出しを行っています。 新聞のラテン系アメリカ人の論文の問題は、符号化する必要のあるラテン文字を見つけるのに共通しています(á é í ó úなど)。Apache Camel xmlをhttpからjsonにマーシャリングした後のエンコーディングが間違っています

問題は、私はこの1つのような説明を取得して応答が適切にエンコードされていないということです。 Las lluvias llegar��an a la ciudad de C��rdoba jueves y viernes seg��n prev�� el Servicio Meteorol��gico Nacional (SMN)

私は、HTTPコンポーネントとxmljsonマーシャルと仕事の両方のどちらの符号化パラメータを設定しようとしました。私はまた、application/rss+xml; charset=utf-8application/json; charset=utf-8のどちらのContent-Typeヘッダも強制しませんでした。

私は、次のデータフォーマットを使用しています:以下のように

<dataFormats> 
    <xmljson id="xmljson"/> 
</dataFormats> 

そして、私のルートは以下のとおりです。

<route id="rss"> 
    <from uri="direct:rss"/> 
    <setHeader headerName="CamelHttpUri"> 
     <simple>"http://srvc.lavoz.com.ar/rss.xml"</simple> 
    </setHeader> 
    <setHeader headerName="CamelHttpMethod"> 
     <constant>GET</constant> 
    </setHeader> 
    <to uri="http://rss"/> 
    <marshal ref="xmljson"/> 
</route> 

例応答は次のようになります。

{ 
    "channel": { 
    "title": "LaVoz", 
    "link": "http://srvc.lavoz.com.ar/rss.xml", 
    "description": [], 
    "language": "en", 
    "item": [ 
     { 
     "title": "��Se vienen las lluvias a C��rdoba?", 
     "link": "http://srvc.lavoz.com.ar/ciudadanos/se-vienen-las-lluvias-cordoba", 
     "description": "Las lluvias llegar��an a la ciudad de C��rdoba jueves y viernes seg��n prev�� el Servicio Meteorol��gico Nacional (SMN) aunque se mantendr�� el promedio de las temperaturas.�� Este martes estuvo cielo algo nublado con una temperatura m��nima de 14�� registrada a las 6.10 y una m��xima de 29,5�� a las 15.30, seg��n indic�� el Observatorio Meteorol��gico C��rdoba.�� Pron��stico extendido Hay probabilidad de tormentas para jueves y viernes. Mir�� el pron��stico.�� Ciudadanos", 
     "pubDate": "Tue, 14 Feb 2017 21:19:21 +0000", 
     "dc:creator": { 
      "@xmlns:dc": "http://purl.org/dc/elements/1.1/", 
      "#text": "redaccionlavoz" 
     }, 
     "guid": { 
      "@isPermaLink": "false", 
      "#text": "1099119 at http://srvc.lavoz.com.ar" 
     } 
    },... 

更新:
- I fルートがXMLレスポンスを返します(JSONにマーシャリングしないで)、エンコーディングは期待通りに機能します。
- XMLレスポンスのボディコンテンツをロガーにマーシャリングする代わりに、問題が発生します。

+0

あなたはIS0 8859-1を試してみましたか? –

+0

@SoucianceEqdamRashtiはい、うまくいきませんでした。 ISO 8859-1またはUTF-8のいずれかがエンコードの問題を解決するはずです。 – fuxes

答えて

1

マーシャリングの前に、本体をconvertBodyToで文字列をUTF-8を使用して文字列に変換することで解決できました。

終了コードは次のようになります。

<route id="rss"> 
     <from uri="direct:rss"/> 
     <setHeader headerName="CamelHttpUri"> 
      <simple>"http://srvc.lavoz.com.ar/rss.xml"</simple> 
     </setHeader> 
     <setHeader headerName="CamelHttpMethod"> 
      <constant>GET</constant> 
     </setHeader> 
     <to uri="http://rss"/> 

     <convertBodyTo type="String" charset="UTF-8" /> 
     <setProperty propertyName="CamelCharsetName"> 
     <constant>utf-8</constant> 
     </setProperty> 

     <marshal ref="xmljson"/> 
    </route> 
+0

多くの感謝!それは私の多くの時間を節約しました。 –

関連する問題