【发布时间】:2016-11-20 23:03:50
【问题描述】:
我有这个 REST 资源:
@GET
@Path("{business},{year},{sample}")
@Produces(MediaType.APPLICATION_JSON)
public Response getSample(
@PathParam("business") String business,
@PathParam("year") String year,
@PathParam("sample") String sampleId {
Sample sample = dao.findSample(business, year, sampleId);
return Response.ok(sample).build();
}
sample 参数可以包含斜杠字符:例如6576/M982。
我用http://ip:port/samples/2000,2006,6576/M982 调用它,但显然不起作用。
我也试过http://ip:port/samples/2000,2006,6576%2FM982,将斜杠编码为%2F,但也不起作用,它没有到达端点。
编辑
我正在使用 Retrofit 调用端点,我这样做:
@GET("/samples/{business},{year},{sampleId}")
Observable<Sample> getSampleById(
@Path("business") String business,
@Path("year") String year,
@Path(value = "sampleId", encoded = true) String sampleId);
使用encoded = true,但仍然无法正常工作。
【问题讨论】:
-
你必须
URLEncode它。 -
你试过
@GET("/samples/{business}%2C{year}%2C{sampleId}")吗?