私の問題は2つあり、エンコードに関係しています。JBoss 7.1.1 にデプロイされた REST Web アプリケーションがあります。これには、提供された WSDL から CXF java2wsdl を使用してスタブを作成した外部 Web サービスへのアダプターがあります。この外部 Web サービスへの要求/応答中に、要求と応答にブルガリア語でエンコードされたコンテンツが含まれる場合があります。
問題は、このエンコードされたコンテンツが、SOAPUI からのものであるにもかかわらず、REST サービスや SOAP アダプターによって正しく送信/消費されないことです。以下は例です
REST CALL は、パラメーター「Тест Тест」を次のように渡します。
@PathParam("receiverName") 文字列 receiverName
ヘッダーにはcharset=UTF-8が含まれています
cxf ロギング インターセプターを使用したサーバー ログには、次のログが記録されます。
--------------------------------------
Inbound Message
----------------------------
ID: 32
Address: http://127.0.0.1:8080/rest/request/card/10122083/%D0%A2%D0%B5%D1%81%D1%82%20%D0%A2%D0%B5%D1%81%D1%82/1234124143312
Encoding: UTF-8
Http-Method: POST
Content-Type: application/json; charset=UTF-8
Headers: {Accept=[application/json], accept-encoding=[gzip, deflate], accept-language= [en-gb,en;q=0.5], cache-control=[no-cache], connection=[keep-alive], Content-Length=[313], content-type=[application/json; charset=UTF-8], host=[127.0.0.1:8080], pragma=[no-cache], user-agent=[Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1]}
----------------------------
私のコードによってログに出力されたパラメーターの値は「???? ????」です。
バックエンドで再びブルガリア語のコンテンツを受信すると問題が発生します。以下はそのような応答の例です
Encoding: UTF-8
Content-Type: text/xml
Headers: {Accept=[*/*],
ログとwiresharkによると、リクエストは上記のヘッダーで送信され、レスポンスは次のとおりです。
-----------------------------------------------------------------
ID: 2
Response-Code: 200
Encoding: ISO-8859-1
Content-Type: text/xml
Headers: {Content-Length=[1011], content-type=[text/xml], Server=[IRS/1.0.18.0 guz]}
Payload: <?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:loy="http://www.location.bg/Loyalty/">
<soapenv:Header/>
<soapenv:Body>
<loy:CustLoyaltyResponse>
<OutputRequestID>SCR0000000394</OutputRequestID>
<OutputTimeStamp>20120918095649992</OutputTimeStamp>
<StatusCode>0</StatusCode>
<StatusMessage>Loyal Customer</StatusMessage>
<CustomerCode>10122083</CustomerCode>
<CustomerLoyalStatus>1</CustomerLoyalStatus>
<LoyalLevel>Special</LoyalLevel>
<CardObject>
<CardStatus>0</CardStatus>
<CardCustCode>10122083</CardCustCode>
<CardNo>100012624110122083</CardNo>
<CardState>4</CardState>
<Level>Special</Level>
<City>Р?Р°С?РЅР°</City>
<Postcode>9000</Postcode>
<Address>жк. Чайка</Address>
<NameOfRecipient>РўРµС?С? РўРµС?С?</NameOfRecipient>
<NumberOfRecipient>12345678</NumberOfRecipient>
<LastStatusChangeDate></LastStatusChangeDate>
</CardObject>
</loy:CustLoyaltyResponse>
</soapenv:Body>
</soapenv:Envelope>
-----------------------------------------------------------------
この問題は、
<City>Р?Р°С?РЅР°</City>
<Address>жк. Чайка</Address>
一方、SOAPUI では結果は正しい
<City>Варна</City>
<Address>жк. Чайка</Address>
問題が何であり、それを解決する方法はありますか?