适用于 Java 的异步 HTTP 客户端
2022-09-02 05:34:12
作为Java世界中的一个相对新手,我发现许多令人沮丧的事情都是迟钝的,而这些事情在许多其他框架中都是相对微不足道的。一个主要示例是异步 http 请求的简单解决方案。鉴于一个似乎不存在,最好的方法是什么?使用阻塞类型lib(如httpclient或内置的java http)创建我自己的线程,或者我应该使用较新的非阻塞io java东西 - 对于应该简单的东西来说,它似乎特别复杂。
我正在寻找的是一些从开发人员的角度来看易于使用的东西 - 类似于AS3中的URLLoader - 你只需创建一个URLRequest - 附加一堆事件处理程序来处理完成,错误,进度等,并调用一个方法来触发它。
如果您不熟悉AS3中的URLLoader,它非常容易,看起来像这样:
private void getURL(String url)
{
URLLoader loader = new URLLoader();
loader.addEventListener(Event.Complete, completeHandler);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
URLRequest request = new URLRequest(url);
// fire it off - this is asynchronous so we handle
// completion with event handlers
loader.load(request);
}
private void completeHandler(Event event)
{
URLLoader loader = (URLLoader)event.target;
Object results = loader.data;
// process results
}
private void httpStatusHandler(Event event)
{
// check status code
}
private void ioErrorHandler(Event event)
{
// handle errors
}