2

我正在使用 Jersey Java 和 Tomcat 编写 REST 服务。这是我的问题 - 我如何接受两个@PathParam包含斜杠的变量?即enrollment/{id}/{name},id 可以是i124/af23/asf,name 可以是“bob/thatcher”。

@GET 
@Path("enrollment/{id}/{name}")
public String enrollPerson(@PathParam("id") String id, @PathParam("name") String name) {
    System.out.println(name +  " " + id);
    return("Enrolled!");
}

我看到了这个问题:Tomcat, JAX-RS, Jersey, @PathParam: how to pass dots and slashes? 它回答了我的部分问题,但它提供了一个包含斜杠的参数的解决方案(我有两个带有斜杠的参数)。

任何帮助,将不胜感激!

4

1 回答 1

4

我相信答案是在发送之前对字符串进行 URLEncoding,然后在方法中对字符串进行 URLDecoding。所以我的方法应该是:

@GET 
@Path("enrollment/{id}/{name}")
public String enrollPerson(@PathParam("id") String id, @PathParam("name") String name) {
    String decodedName = URLDecoder.decode(name, "UTF-8");
    String decodedId = URLDecoder.decode(id, "UTF-8");
    System.out.println(decodedName + " " + decodedId);
    return("Enrolled!");
}
于 2012-10-26T19:08:45.590 回答