gpt4 book ai didi

jetty - 如何从 Jetty Client Async API 中的 CompleteListener 获取内容

转载 作者:行者123 更新时间:2023-12-04 17:50:37 25 4
gpt4 key购买 nike

在下面来自 Jetty 文档的示例中,描述了一种执行高效异步 HTTP 请求的简单方法。但是,它从未指定在此示例中您实际应该如何检索服务器的回复,我似乎无法弄清楚。

Result 对象有 getResponse() 和 getRequest(),但它们都没有访问内容的方法。

有人知道吗?

Jetty 的文档

一个简单的异步 GET 请求可以这样写:

httpClient.newRequest("http://domain.com/path")
.send(new Response.CompleteListener()
{
@Override
public void onComplete(Result result)
{
// Your logic here
}
});

方法 Request.send(Response.CompleteListener) 返回 void 且不阻塞;当请求/响应对话完成时,将通知作为参数提供的 Response.CompleteListener,并且 Result 参数允许您访问响应对象。

最佳答案

您可能想要 Jetty 9 HttpClient documentation作为引用。

您的问题的详细答案已得到解释 here , 节 Response Content Handling .

如果你通过一个普通的 CompleteListenerRequest.send(CompleteListener) ,这意味着您对内容不感兴趣,这些内容将被丢弃。

如果您对内容感兴趣,但仅在响应完成时,您可以传递提供的实用程序类,例如 BufferingResponseListener :

request.send(new BufferingResponseListener() { ... });

如果您对到达的内容感兴趣,您应该通过 Response.ContentListener ,它将逐块通知您内容块。

您可以通过两种方式执行此操作:使用 Response.Listener (扩展 Response.ContentListener ):

request.send(new Response.Listener() 
{
public void onContent(...) { ... }

public void onComplete(...) { ... }
});

或使用多个监听器:

request.onResponseContent(new Response.ContentListener() { ... });
request.send(new CompleteListener() { ... });

您拥有您想要的所有灵活性,以及​​可以帮助您的开箱即用实用程序类(无需编写复杂的缓冲代码,只需使用 BufferingResponseListener )。

关于jetty - 如何从 Jetty Client Async API 中的 CompleteListener 获取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17268087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com