我有一个基于Jersey的Java servlet:
@Path("foo")
class Foo {
@GET
@Path("bar")
public Response bar(@QueryParam("key") String value) {
// ...
}
}
我可以在Tomcat中轻松地调用它,如下所示:
http://localhost:8080/container/foo/bar?key=blah
然而,在我的JerseyTest中,使用Grizzly时,它无法正确处理参数。这个测试用例返回了一个404错误:
@Test
public void testBar() {
final Response response = target("foo/bar?key=blah").request().get();
}
我怀疑问题在于它正在寻找一个名为foo/bar?key=blah
的资源,而不是尝试将key=blah
传递给位于foo/bar
的资源。如果我只将"foo/bar"
传递给target()
,我会得到一个500错误,因为代码会因参数为空而抛出异常。
我查看了Jersey测试文档和一些示例,发现了一些神秘的东西,可能用于传递GET请求的参数,但其中没有一个看起来像是给参数赋值,所以我不确定该如何使用它。
如何为该参数传递我的值?
request
之前调用queryParam
。流畅的API之后将不允许这样做。我花了一分钟才弄明白。 - Tim Büthe