私はSOAP WSメソッドを呼び出すSOAPクライアントを持っています。問題は、以下のコードを使用してJavaでデータを受け取ると、javaはSOAPMessageをデフォルトのエンコーディングを使用して解析します。その結果、私はWSレスポンスを印刷するときにいくつかのガベージ文字が表示されます。SOAPレスポンスエンコーディングの問題
SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = connectionFactory.createConnection();
SOAPMessage response = connection.call(soapMessage, endpoint);
したがって、特定の文字エンコーディングを使用するために上記の.call()メソッドを指定または強制する方法はありますか。
SOAP UIを使用してWSをテストし、SOAP UIのRAW XMLタブに有効な文字を表示しました。
編集:アム印刷、コードの下に使用して文字化けの有無を確認する:call()
にパラメータとしてごsoapMessage
変数を送信する前に
soapMessage.setProperty(SOAPMessage.WRITE_XML_DECLARATION, Boolean.TRUE);
:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
response.writeTo(baos);
String s2 = new String(baos.toByteArray(), "ISO-8859-1"); // decoding
System.out.println(s2);
それはあなたが間違って応答を処理していること、またはあなたの端末が文字を表示することができない可能性がありますか?どのようにあなたの応答を印刷していますか? – jtahlborn
@jtahlborn私の編集をご覧ください。 – Mohit
私はあなたがそれを表示しようとしているときに応答を壊していると思います。レスポンスが "iso-8859-1"を使ってエンコードされているという事実を知っていますか? – jtahlborn