java - ReSTLet引用解码 "#"符号

标签 java web-services restlet

我设置了一个 URI,如下所示:

router.attach("/pmap/campaign/{campaign}/staffCat/{staffCat}/isp/{isp}", PMAPResource.class);

在 PMAPResource.class 中,我有以下代码:

public Representation represent()
{
    String campaignID   = (String) this.getRequestAttributes().get("campaign");
    String staffCat     = Reference.decode((String) this.getRequestAttributes().get("staffCat"));
    String ispID        = (String) this.getRequestAttributes().get("isp");
}

staffCat字段是用户手动输入的,可以是任何内容。一些例子是:

BAA2(A)
BAB1#(A)
BA B1

它适用于大多数情况,直到遇到 # 符号并返回 404 Not Found 错误。控制台转储显示以下 /fwd-PMAP/pmap/campaign/1/staffCat/BAB1

我应该怎么做才能读取“#”以便获得 BAB1#(A) 的原样?

最佳答案

# 在 URL 中具有特殊含义。必须对其进行转义。

URL 中实际上有很多特殊字符,因此在客户端中构建 URL 时应始终转义任意文本。

在这种特殊情况下,客户端发送的正确 URL 类似于:

/fwd-PMAP/pmap/campaign/1/staffCat/BAB1%23(A)/isp/XXX

这又是一个需要在客户端解决的问题。服务器将为您解码 %23

关于java - ReSTLet引用解码 "#"符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37649538/

相关文章:

java - Apache Camel ReSTLet 不工作

iphone - 兴趣点 API/Web 服务

java - 尝试调用 Web 服务调用时访问被拒绝

java - 如何确定我正在使用哪个版本的 ReSTLet API?

java - java中的列表<结构>

java - java 的 sudzc 有替代方案吗?

java - 常见 Web 服务中的数据模型

java - 使用jdk 1.6和jdk 1.7进行不同的eclipse程序

java - @ControllerAdvice 不映射到错误

java - Fiddler 在以下场景中可以作为反向代理吗?如果没有其他工具可以用于调试?