2016-08-11 12 views
2

私はApache CXFを使用してSOAPクライアントを作成しています。 Webサービス応答には、Üである[0xc3][0x9c]という次のウムラウト文字が含まれています。CXFクライアントでSOAP応答のエンコーディングを設定する方法は?

String utfString = new String(isoString.getBytes("ISO-8859-1"), "utf-8"); 

しかし、私はむしろ、自動的にUTF8文字列にISOを変換するために、クライアントを設定したい:私はのような応答を読んだとき、私は手動でこのフィールドを変換することができもちろん

質問:どのようにCXFクライアントで受信要求に対してこれをグローバルに設定できますか?

+0

Webサービスを修正しました。コンテンツタイプに「charset = utf8」属性を正しく設定する必要があります。 –

+0

私はWebサービスを制御できません。もちろんそれはすべきですが、不可能です。 – membersound

+1

私たちのサービス/ soap/httpはまさに新技術ではありません。バグを報告し、サプライヤーとの関係に応じて、修正を求めてください。それ以外の場合は、プロキシサーバーに正しいヘッダーを追加することで、クライアントコードの不具合を防ぐことができます。ほとんどの企業でプロキシサーバーからルールを削除するのは、Javaアプリケーションを本番環境に再デプロイするよりもずっと簡単なので、誰かがサービスを修正してから数年後に感謝するでしょう。 –

答えて

0

以下のようにエンコードを設定できます。

@Bean 
    public KPWs kpMath(SpringBus bus) { 
     final JAXWSSpringClientProxyFactoryBean client = new JAXWSSpringClientProxyFactoryBean(); 
     client.setBus(bus); 
     client.setAddress("http://localhost:8080/services/ws ?wsdl"); 
     client.getFeatures().add(new LoggingFeature()); 
     Map<String, Object> map = new HashMap<>(); 
     map.put("org.apache.cxf.message.Message.ENCODING", "ISO-8859-1"); 
     client.setProperties(map); 
     return client.create(KPWs.class); 

    } 
関連する問題