当前位置: 首页 > 知识库问答 >
问题:

Jersey客户端不等待GET方法的结果

董俊晖
2023-03-14

我有一个简单的Java应用程序,使用Jersey进行请求,在其他应用程序中,我使用Jersey的GET请求点击了一些endpoint,如下所示:

Client client = new Client();
WebResource webResource = client.resource("MY_ENDPOINT");
webResource.get(String.class);

正如您所见,我甚至不关心endpoint的结果,我只想“触发”它,因为endpoint一旦收到调用,就会自行运行一些代码。

我在这里的“问题”是,我对5个endpoint进行此操作,它们通常需要3秒钟,我不需要等那么久,因为endpoint只返回一个“确定”消息,我不关心实际消息。

有没有什么方法可以在不“阻塞”Java的情况下完成这个GET操作?就像“做这个调用并忽略结果”一样?我想把它留在泽西,但我对其他方法持开放态度。

共有2个答案

穆飞龙
2023-03-14

我很久以前就看到JAX-RS添加了异步客户机/服务器工作流(这里是Jersey实现的链接):https://jersey.github.io/documentation/latest/async.html

我还没有使用(并测试过)它,但我认为您可以尝试(比如伪代码):

  WebTarget target = client.target("http://targetsite/entrypoint");
  target.request().async().get(new InvocationCallback<Response>() {
      @Override
      public void completed(Response response) {
          return; //do nothing
      }

      @Override
      public void failed(Throwable throwable) {
          System.out.println("Error");
      }
  });
  System.out.println("Immediately here");

请告诉我,如果这是故意的,只是好奇

注:我认为,有了这段代码,你的程序仍将等待响应,但在另一个线程中,你不必在主线程中管理事情。。但这种复杂性是隐藏的。

常心水
2023-03-14

我刚搬到OkHttp:

    Request request = new Request.Builder().url(MY_ENDPOINT).build();
    client.newCall(request).enqueue(callback);

回调变量只是一个空回调。

 类似资料:
  • 我已经创建了一个简单的Jersey客户端,它能够成功地使用有效负载执行POST请求。但现在它正在等待来自httpendpoint的响应: 问:代码是否有可能不等待响应。 我试图阅读泽西客户端文档,以确定我的代码是否有可能不等待响应?我看到我们只能在读取响应后关闭连接,但在我的情况下没有用。我想在将有效负载发布到endpoint后立即关闭连接。 我只需要触发并忘记POST请求,因为我不关心响应。这是

  • 我正在尝试创建RESTful web服务,但无法使删除生效,我不确定问题在哪里。我认为问题在客户端项目中,但也可能在服务器项目的资源类中。 我有一个使用这种方法的学生道课,我不认为这是一个问题,因为它适用于其他项目。 我有一个StudentResource类,它是我从包含这段代码的模式中创建的RESTful资源 然后,我创建了一个java项目,并使用此方法创建了名为OneStudent的RESTf

  • DropWizard在REST的引擎盖下使用泽西。我正在尝试弄清楚如何为我的DropWizard应用程序将公开的RESTfulendpoint编写客户端。 为了这个例子,让我们假设我的DropWizard应用程序有一个< code>CarResource,它为CRUDding cars公开了几个简单的RESTfulendpoint: 因此,我认为结构化的API客户端将类似于: 但是我能找到的关于D

  • URI 方法 URI() string 返回当前客户端使用的服务器地址。 SetURI 方法 SetURI(uri string) 设置当前客户端使用的服务器地址。如果你想要设置多个服务器地址,请使用 SetURIList 方法代替该方法。 URIList 方法 URIList() []string 返回当前客户端可使用的服务器地址列表。 SetURIList 方法 SetURIList(uriL

  • 我有一些文件要上传,有些文件失败了,因为帖子是异步的,而不是同步的。 我正在尝试将此调用作为同步调用。 我想等回应。 如何将此调用设为同步调用? 任何帮助感谢!

  • 问题内容: 如何使用Jersey客户端API将GET请求发送到运行HTTPS协议的服务器。我可以使用任何示例代码吗? 问题答案: 这样构建您的客户 从此博客文章中窃取了更多详细信息:http : //blogs.oracle.com/enterprisetechtips/entry/consumption_restful_web_services_with 有关设置证书的信息,请参见以下已很好回答