使用@ javax.ws.rs.Encoded观察到奇怪的行为

时间:2015-01-06 12:45:58

标签: java web-services rest cxf jax-rs

我在服务中使用@ javax.ws.rs.Path(" / {input:。+}")的rest方法接受"输入"的任何值。 pathparam。示例代码在这里。

@GET
@Path("/{input:.+}")
@Produces({ XML })
public Response getByInput(@PathParam("input") @Encoded String input,
                                 @Context javax.ws.rs.core.UriInfo uriInfo)

@Encoded注释将阻止解码pathparam,queryparam和formparams。 但在我的情况下,如果输入包含

  1. %2B已被解码为+
  2. %2F已编入%252F
  3. 使用SoapUI测试其余服务,以下是示例请求:

    Req 1: GET /rest/Ca%2B2siaeevAg9BkOLKkMmgwlZ20%3D
       the value of input = Ca+2siaeevAg9BkOLKkMmgwlZ20=
       But i am expecting Ca%2B2siaeevAg9BkOLKkMmgwlZ20%3D
    Req 2: GET /rest/Ca%2F2siaeevAg9BkOLKkMmgwlZ20%3D
       the value of input = Ca%252F2siaeevAg9BkOLKkMmgwlZ20=
       But i am expecting Ca%2F2siaeevAg9BkOLKkMmgwlZ20%3D
    

    为什么%2B和%2F的行为有所不同?

    你能帮助我吗,我必须在我的项目中解决这个问题。

0 个答案:

没有答案