4

インターネットで問題を見つけたのは、soap リクエストに ,,ctrl + v の Unicode char が含まれていることです。これは Xml では不正な文字です。これがどのように文字列に入るかはわかりませんが、サーバー側で簡単に削除したいと考えています。

誰かがこの問題を解決する方法を教えてもらえますか? このスニペットを見つけました:

  XMLOutputFactory f = new WstxOutputFactory();
  f.setProperty(WstxOutputProperties.P_OUTPUT_INVALID_CHAR_HANDLER,
    new InvalidCharHandler.ReplacingHandler(' '));
  XMLStreamWriter sw = f.createXMLStreamWriter(...);

このハンドラーを使用して WstxOutputFactory を構築するために Spring を構成する方法を教えてもらえますか? - InvalidCharHandler.ReplaceingHandler(' ') . アドバイスをありがとう。

4

1 に答える 1

6

解決策は非常に簡単です:

    <jaxws:endpoint id="kservice"  
                    implementor="#kostrounService"
                    address="/call_kostroun" >
                    <jaxws:properties>
                           <entry key="javax.xml.stream.XMLOutputFactory"            valueref="xmlOutputFactory" />
                     </jaxws:properties>       
    </jaxws:endpoint> 
 <bean id="invalidCharHandler"   class="com.ctc.wstx.api.InvalidCharHandler$ReplacingHandler">
         <constructor-arg value=" "/>
   </bean>

   <bean id="xmlOutputFactory" class="com.ctc.wstx.stax.WstxOutputFactory"/>

   <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetObject">
            <ref local="xmlOutputFactory" />
        </property>
        <property name="targetMethod">
            <value>setProperty</value>
        </property>
        <property name="arguments">
            <list>
                 <util:constant static-field="com.ctc.wstx.api.WstxOutputProperties.P_OUTPUT_INVALID_CHAR_HANDLER"/>
                 <ref bean="invalidCharHandler" />
            </list>
        </property>
    </bean>

この構成のスニペットは、SOAP メッセージから不正な文字を削除し、アプリを実行します ;-)

于 2012-08-22T13:12:04.227 に答える