package demo;
import java.util.concurrent.CountDownLatch;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.nio.client.DefaultHttpAsyncClient;
import org.apache.http.nio.client.HttpAsyncClient;
import org.apache.http.nio.concurrent.FutureCallback;
import org.apache.http.nio.reactor.IOReactorException;
public class Main {
/**
* @param args
* @throws IOReactorException
* @throws InterruptedException
*/
public static void main(String[] args) throws IOReactorException, InterruptedException {
final HttpAsyncClient httpclient = new DefaultHttpAsyncClient();
httpclient.start();
HttpGet[] requests = new HttpGet[] {
new HttpGet("http://www.apache.org/"),
new HttpGet("https://www.verisign.com/"),
new HttpGet("http://www.google.com/")
};
final CountDownLatch latch = new CountDownLatch(requests.length);
try {
for (final HttpGet request: requests) {
httpclient.execute(request, new FutureCallback<HttpResponse>() {
public void completed(final HttpResponse response) {
latch.countDown();
System.out.println(request.getRequestLine() + "->" + response.getStatusLine());
}
public void failed(final Exception ex) {
latch.countDown();
ex.printStackTrace();
}
public void cancelled() {
latch.countDown();
}
});
}
System.out.println("Doing...");
}finally {
latch.await();
httpclient.shutdown();
}
System.out.println("Done");
}
}
分享到:
相关推荐
主要介绍了java实现HttpClient异步请求资源的方法,实例分析了java基于http协议实现异步请求的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
HttpAsyncClient连接池的使用,项目中频繁发送http请求,同步http阻塞主线程,影响性能,使用 HttpAsyncClient可使性能提高,这里配合连接池使用,效果更好,同时还附带同步httpClient的连接池使用
2.使用线程池并发请求限制资源的使用。 3.支持Http的所有谓词。 4.封装请求参数,使调用更加容易。 5.可配置化的实现,全局配置与单次请求配置结合,让一切更可控。 6.支持Http缓存。 使用: #####1.eclipse环境 ...
HttpClient组件HttpClient组件提供了强大的方法来同步或异步获取HTTP资源。 该组件是实验性的。 Symfony的向后兼容HttpClient组件未涵盖实验性功能。HttpClient组件提供了强大的方法来同步或异步获取HTTP资源。 资源...
WebApiClientCore 的netcore版本,集高级高可扩展性于一体的声明式http客户端库,特别适用于微服务的restful资源请求,也适用于各种畸形的http接口请求。努吉特包名描述努吉特WebApiClientCore基础包 ...
一个通用的基准测试工具依赖于tornado基于epoll模块、异步httpclient、多进程和python绘图包matplotlib、numpy为matlab 2D图形的高性能网络框架的特性。 当前版本支持get和post的http协议,项目还在为通用协议的...
######异步请求 //创建异步网络访问参数实例 HttpParams params = new HttpParams(); //添加参数,支持基础类型与String、List等 params.put("name", "Selly"); //创建异步网络客户端实例 HttpClient client = new ...
主要技术:httpclient模拟浏览器发送请求;异步加载图片资源,采用软引用将图片资源缓存在内存中;获取的数据量大的情况下采用分批加载数据;优化用户体验,在3G情况下不加载图片;保证程序不异常终止,并将错误信息...
Android 仿华为商城仿的一个华为商城的项目,还有些功能没有实现,就是几个页面,登录功能和支付没有写,用了fragment,listview,gridview,异步请求。写的时候没有用任何第三方类库,HttpClient,数据库存储,内部...
集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...
(4) http模块:通过httpclient进行封装http数据请求,支持异步及同步方式加载。 (5) 缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置 (6) 图片缓存模块:imageview加载图片的时候无需...
3.11.1 请求解析和业务处理线程池分离 57 3.11.2 业务线程池隔离 58 3.11.3 业务线程池监控/运维/降级 58 3.11.4 如何使用Servlet 3异步化 59 3.11.5 一些Servlet 3异步化压测数据 64 4 限流详解 66 4.1 限流算法 67...
+ :star:基于Gateway针对同一IP的所有请求做令牌桶限流,基于Sentinel对热门车次的购票请求做限流降级 + 基于jmx和visualVM监控业务服务的内存和CPU消耗 ### 4. 网络编程 + 利用Httpclient调用第三方API,利用...
http模块:通过httpclient进行封装http数据请求,支持异步及同步方式加载。 缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置 图片缓存模块:imageview加载图片的时候无需考虑图片加载...
http模块:通过httpclient进行封装http数据请求,支持异步及同步方式加载。 缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置 图片缓存模块:imageview加载图片的时候无需考虑图片加载过程...
|--网络post提交查询请求 |--网络之HttpClient的get和post用法 |--网络之判断网络状态是否可用 |--网络之设置apn |--网络图片查看器 |--网络图片的下载与缓存 |--网络文件的下载与关联进度条 |--联系人之各种查找 |-...
集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...
Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证...