设置Jersey Test Call查询参数



我有一个基于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 Test文档和一些例子,我发现了一些看起来很神秘的东西,可能是为了将参数传递给GET,但没有一个看起来像在给参数赋值,所以我不确定我将如何使用它。

如何将我的值传递给该参数?

JavaDoc到WebTarget.queryParam()应该会给你一个问题的答案。基本上你需要把你的代码转换成这样的形式:

target("foo/bar").queryParam("key", "blah").request().get()

最新更新