【问题标题】:Set Query Parameters on a Jersey Test Call在 Jersey 测试调用中设置查询参数
【发布时间】:2014-09-06 08:19:06
【问题描述】:

我有一个基于 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,但它们看起来都不像是在为参数赋值,所以我没有t 肯定我会如何使用它。

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

【问题讨论】:

    标签: java jersey jersey-2.0 grizzly


    【解决方案1】:

    WebTarget.queryParam() 的 JavaDoc 应该会给你一个问题的答案。基本上,您需要将代码转换为:

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

    【讨论】:

    • 只是一个提示:确保在request 之前调用queryParam。流利的 API 之后将不允许它。花了我一分钟。
    • 发帖请求可以用什么?
    • 如何添加多个参数多个键?
    猜你喜欢
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多