0

テキストをコンソールにエコーするだけの非常に単純なサービスを作成しました。このサービスは、単一のパラメーターを持つ、メソッド echo を持つ単なる POJO です。

public class EchoTest
{
    public void echo(String myMessage)
    {
        System.out.println(myMessage);
    }
}

これはservices.xmlからのものです:

<service name="EchoTest">
    <description>Echo test</description>
    <parameter name="ServiceClass">EchoTest</parameter>

     <operation name="echo">
        <messageReceiver  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </operation>
</service>

さらに、非常に単純な HTML フォームを使用してデータをサービスに送信します。

<html>
<body>
    <form method="post" target="responseFrame" action="../../services/EchoTest/echo">
        <input name="myMessage" type="text">
        <input value="Send" type="submit"/>         
    </form>
    <iframe width=500 height=500 name="responseFrame"></iframe>
</body>
</html>

私が抱えている問題は、スペースが「+」に置き換えられることです。たとえば、次のようなメッセージを入力するとします。

Hey you & you - # % @

結果は次のとおりです。

Hey+you+&+you+-+#+%+@

何らかの形でエンコードする必要がありますか、それともこのように動作すべきではありませんか? それとも設定の問題でしょうか?Tomcat を Web コンテナーとして使用しています。参考までに、Tomcat でサーブレット フィルターを使用して、たとえば IP アドレスをフィルター処理すると、myMessage パラメーターに + 記号がなく、問題ないように見えます。

4

1 に答える 1

0

問題は実際には Axis2 自体にあることが判明しました。正確にはわかりませんが、私が使用していたバージョンは 2009 年 10 月のリリース 1.5.1 でした。バグ レポートが見つからないのが私のバグです。すぐに修正されたのかもしれませんが、私は残念でした。

Axis2 の最新バージョンにアップグレードすると、問題が解決しました。

于 2013-03-01T15:43:25.597 に答える