java - 字符串参数通常在网络服务中自动转义吗?

标签 java web-services cxf

我今天发现从客户端传递到服务器的字符串参数中的简单 % 会导致 Bad Request 400

由于我对 Web 服务有基本的了解,所以我不知道这是否是正常行为。我是否遗漏了什么(转义字符串是我的责任吗?)还是我应该看看其他地方?

客户端代码:

@WebMethod(operationName = "push", action = "urn:Push")
public boolean push(String msg);

服务器代码:

@XmlRootElement(name = "push", namespace = "http://ws.something.com/")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "push", namespace = "http://ws.something.com/", propOrder = {"arg0"})
public class Push {

    @XmlElement(name = "arg0")
    private java.lang.String arg0;

    public java.lang.String getArg0() {
        return this.arg0;
    }

    public void setArg0(java.lang.String newArg0)  {
        this.arg0 = newArg0;
    }
}

注意:

这个客户端/服务器对在我们的开发主机服务器上本地运行良好,即使字符串参数中有 % 也是如此。但是,它确实会在另一台主机服务器上导致 Bad Request 400。所以它可能与服务器主机环境有关。如果是这样,我想提示可能导致这种情况的原因。

最佳答案

您的环境中的默认字符集很可能不同。试试这个示例。

    String test = new String("%");
    System.out.println(test);
    byte[] byteArray = test.getBytes("UTF-16");
    test = new String(byteArray);
    System.out.println(test);

这很初级,但您会了解字符编码如何影响结果。

检查此以获取更多详细信息。 https://docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html

关于java - 字符串参数通常在网络服务中自动转义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39415024/

相关文章:

java : Different ways for constructing an ArrayList

java - Apache CXF - 没有任何策略替代方案可以得到满足异常

java - CXF中 "org.apache.cxf.resource.method"的意义是什么?

java - Android Gradle非法规则

java - Picasso 加载 PHOTO_THUMBNAIL_URI 但不加载 PHOTO_URI

java - Camel ......评估一个java表达式

web-services - spray-can webservice 优雅关闭

java - 企业应用程序的瘦(更)独立客户端

java - Java JSON 解析器可以访问远程服务吗?

java - cxf 2way ssl not webservice give 无法创建安全的 XMLInputFactory