【发布时间】:2011-10-07 14:23:44
【问题描述】:
我尝试在 REST 服务中传递包含分号(保留符号)的参数,但我遇到了 Apache Tomcat 的问题
使用 Apache CXF 2.3 编写的 REST 服务
@GET
@Path("/getCmBuildAreas/{productName}/{projectName}/{buildConfiguration}")
@Produces(MediaType.APPLICATION_JSON)
public CmBuildAreas getCmBuildAreas(@PathParam("buildConfiguration") String buildConfiguration, @PathParam("productName") String productName, @PathParam("projectName") String projectName) {
...
}
然后我运行查询http://localhost:8080/DevManager/services/rest/getCmBuildAreas/QLARIUS/QLARIUS%3AMAINLINE_JAVA_STR/ANT_JAVA_BUILD%3B8 并收到此错误:
Jul 18, 2011 1:57:53 PM org.apache.cxf.jaxrs.utils.JAXRSUtils findTargetMethod
WARNING: No operation matching request path /DevManager/services/rest/getCmBuildAreas/QLARIUS/QLARIUS%3AAMAINLINE_JAVA_STR/ANT_JAVA_BUILD%3B8 is found, HTTP Method : GET, ContentType : */*, Accept : image/jpeg,application/x-ms-application,image/gif,application/xaml+xml,image/pjpeg,application/x-ms-xbap,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/*,.
Jul 18, 2011 1:57:53 PM org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse
WARNING: WebApplicationException has been caught : no cause is available
PS:如果您需要任何其他信息,请询问。
【问题讨论】:
-
/getCmBuildConfigurations/{productName}/{projectName}应该如何匹配/getCmBuildAreas/QLARIUS/QLARIUS%3AMAINLINE_JAVA_STR/ANT_JAVA_BUILD%3B8? -
我注意到你的 URL 有
getCmBuildAreas并且你的@Path注释有getCmBuildConfigurations- 这些应该匹配吗? -
复制粘贴时出现一些错误...已修复
-
您为什么认为问题出在分号上?当您使用更简单的参数调用服务时,您的服务是否有效?
-
是的,即使我在 ANT_JAVA_BUILD%3B8 参数中传递冒号(%3A)而不是 %3B 或没有保留参数,它也能正常工作
标签: java tomcat rest cxf jax-rs