我正在尝试将PathParams
请求中的GET
传递给我的网络服务。这是服务核心:
@Path("/")
public class MyService {
@GET
@Produces
public String getIntentClassIds() {
return "this works fine";
}
@GET
@Path("/{x}")
@Produces
public String getIntentClassById(@PathParam("x") String intentClassId) {
return "This does not work";
}
}
我的 web.xml 如下所示:
<servlet>
<servlet-name>MyService API</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.mypackagename</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyService API</servlet-name>
<url-pattern>/MyService</url-pattern>
</servlet-mapping>
当我这样打电话给我的服务时:
localhost:8080/MyService
按预期返回this works fine
。但是当我尝试传递这样的参数时:localhost:8080/MyService/pathParam
它会抛出一个404
。有线索吗?
答案 0 :(得分:1)
尽量不在web.xml中声明MyService,只需声明jersy调度程序, 并在课堂上声明你的服务:
未经过测试
@Path("/MyService")
public class MyService {
@GET
@Produces
@path("getIntentClassIds")
public String getIntentClassIds() {
return "this works fine";
}
@GET
@Path("getIntentClassById/{x}")
@Produces
public String getIntentClassById(@PathParam("x") String intentClassId) {
return "This does not work";
}
}
web.xml不应该映射到您的服务MyService: 应该看起来像这样
<servlet>
<servlet-name>MyService API</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.mypackagename</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyService API</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
查看here以获取更多信息
答案 1 :(得分:0)
我认为你不需要斜线:
@Path("/{x}")
将其更改为:
@Path("{x}")
答案 2 :(得分:0)
如果您在课程级别@Path("/")
,我认为您不再需要方法级别。
这就像是
localhost:8080/MyService/(/ -> this is at service class level)[If you keep another here ; I think it cannot parse]pathParam
答案 3 :(得分:0)
使用此:
<url-pattern>/MyService/*</url-pattern>
在web.xml
。
来电URL
将为/MyService/something/dosomemore
在你的java文件中,
@Path("/something")
public class MyService {
@GET
@Produces
public String getIntentClassIds() {
return "this works fine";
}
@GET
@Path("/dosomemore")
@Produces
public String getIntentClassById(@PathParam("x") String intentClassId) {
return "This does not work";
}
}