3

アプリケーションが rpc/encoded Web サービスに接続しています。Axis 1.4 を使用しています。Web サービスが応答を送信すると、無効な文字が送信され、次に例外が送信されます。

http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException: 
  An invalid XML character (Unicode: 0x3) was found in the element content of the document.

xml エンコーディングは「ISO-8859-1」です。それが問題だと思います。

私の質問は、この無効な文字を受け入れるためにアプリケーションで作成できる構成はありますか?

4

2 に答える 2

2

「私のアプリケーションは rpc/encoded の Web サービスに接続しています。」

それが問題です。このサービスは、WS-I に準拠していない「rpc/encoded」です。開発者は、過去のある時点での激しい議論の後、このエラーを「修正」しないことに決めました。

于 2012-10-10T09:42:32.500 に答える
2

org.apache.axis.handlers.LogHandler 内にメソッドを配置して、xml 応答内のコンテンツを先に解析する前に、不正な文字を検索して破棄する問題を解決しました。

独自の LogHandler を作成するには

不正な文字を検索して破壊する方法

新しい LogHandler の logMessages メソッド内に以下を記述します。 private void logMessages(MessageContext msgContext) throws AxisFault { ... msgContext.setResponseMessage(new Message( stripNonValidXMLCharacters(((Message) msgContext .getResponseMessage()).getSOAPPartAsString()))); ... }

于 2012-10-11T13:36:36.520 に答える