0
我创建了一个非常简单的服务,它将一些文本回显到控制台。的服务仅仅是一个的方法回波POJO,具有一个参数:Axis2中POJO参数中空格的编码
public class EchoTest
{
public void echo(String myMessage)
{
System.out.println(myMessage);
}
}
THS距离的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+-+#+%[email protected]
我必须以某种方式对其进行编码或还是应该不是这样的表现?或者这可能是一个设置问题?我使用Tomcat作为Web容器。有关信息,我使用Tomcat中的servlet过滤器来例如过滤IP地址,并在那里我可以看到myMessage参数看起来不错,没有+符号。
URL规范说明空格在请求参数中应该被编码为'+'符号。你是说你在服务器端获取参数值,它仍然是编码的?这似乎不正确... –
@ChristopherSchultz是的,这是服务器端的消息。另一个非常奇怪的事情是,如果我在消息中写了+符号,比如test + test,那么+不会以任何方式进行编码,这个消息只是test + test。如果我写测试+测试,它将成为测试+++测试。这意味着我甚至无法正确解码它:/ – Rob
老实说,这听起来像是一件非常错误的事情。您是否通过Axis2部署了所有这些,而不需要比上面显示的配置更多的配置? –