Restlet Reference解码“#”符号

Restlet Reference decoding "#" sign

我设置了如下 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

它适用于大多数情况,直到它遇到 returns 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