Я пытаюсь использовать Spring Integration для загрузки многоязычного XML файла из Интернета. К сожалению, похоже, что Spring Integration рассматривает его как некоторую другую форму кодирования. Здесь соответствующая часть моей конфигурации:
<int-http:outbound-gateway id="example"
request-channel="requests"
url="http://localhost/test.xml"
http-method="GET"
expected-response-type="java.lang.String"
charset="UTF-8"
reply-timeout="1234"
reply-channel="replies"/>
Текст, который я извлекаю, обрабатывается как ISO-8859-1. Причина, по которой я верю в это, состоит в том, что, если я перекодирую и затем декодирую, я получаю правильный текст. Что-то вроде этого:
public void handleReply(String rawXML) {
String forRealzies = "";
try {
String hack1 = URLEncoder.encode(rawXML, "ISO-8859-1");
forRealzies = URLDecoder.decode(hack1, "UTF-8");
} catch(UnsupportedEncodingException e1) {
e1.printStackTrace();
}
// forRealzies now has the properly encoded String
}
Я действительно надеюсь, что я ошибаюсь в конфигурации XML. Какие-либо предложения?
Вы должны установить charset
для content-type
; см. здесь.
content-type
. Вы можете настроить пользовательский конвертер сообщений или установить expected-response-type
byte[]
а затем использовать <object-to-string-transformer />
с выбранной кодировкой.
charset
используется только при преобразовании исходящей полезной нагрузки String в байты (и для настройки заголовка исходящегоcontent-type
. Правильно лиcontent-type
заголовокcontent-type
в ответе?