public class AsyncHttpSupportTest {

@InjectMocks
private AsyncHttpSupport asyncHttpSupport;
@Mock
private HttpSupport support;

public static void main(String[] args) throws InterruptedException {
AsyncHttpSupport asyncHttpSupport = new AsyncHttpSupport();

asyncHttpSupport.addDefaultHttpHeader("Cache-Control", "no-Cache");
asyncHttpSupport.addDefaultHttpHeader("X-Service-Chain", "prj00804");
asyncHttpSupport.addDefaultHttpHeader("Content-Type", "application/json");

String test = "{\"bizContent\":\"{\\\"kdtId\\\":\\\"30338372\\\",\\\"mchId\\\":\\\"30338372\\\"}\",\"method\":\"test2\",\"service\":\"XXX.pay.test\",\"partnerId\": \"820000000003\", \"sign\":\"38F7FBBA82AA6424A69F810E95059FC5\", \"version\": \"1.0.3\"}";
String url = "http://10.9.169.40:7001/gw";

String queryBankCardList = "{\"bizContent\":\"{}\",\"method\":\"bankinfo\",\"service\":\"XXX.pay.merchant.withdraw\",\"partnerId\": \"820000000003\", \"sign\":\"38F7FBBA82AA6424A69F810E95059FC5\", \"version\": \"1.0.0\"}";

AtomicInteger reject = new AtomicInteger(0);
AtomicInteger counter = new AtomicInteger(0);

Thread[] pools = new Thread[Runtime.getRuntime().availableProcessors()];

for (int i = 0; i < Runtime.getRuntime().availableProcessors(); i++) {
new Thread(() -> {
try {
for (int j = 0; j < 100; j++) {
counter.incrementAndGet();
Future<HttpResponse> res = asyncHttpSupport.post(url,j % 2 == 0 ? test : queryBankCardList);
HttpResponse httpResponse = res.get();
if (EntityUtils.toString(httpResponse.getEntity()).contains("\"code\":50002")) {
reject.incrementAndGet();
}
}
} catch (Exception e) {
}
}
).start();
}
TimeUnit.SECONDS.sleep(50);
System.out.println(reject.get());
System.out.println(counter.get());
}

AsyncHttpSupport并发发送请求的更多相关文章

  1. Python使用grequests并发发送请求

    目录 前言 grequests简单使用 grequests和requests性能对比 异常处理 前言 requests是Python发送接口请求非常好用的一个三方库,由K神编写,简单,方便上手快.但是 ...

  2. 使用dispatch_group实现并封装分组并发网络请求

    在实际开发中我们通常会遇到这样一种需求:某个页面加载时通过网络请求获得相应的数据,再做某些操作.有时候加载的内容需要通过好几个请求的数据组合而成,比如有两个请求A和B,我们通常为了省事,会将B请求放在 ...

  3. spring MVC 管理HttpClient---实现在java中直接向Controller发送请求

    在spring MVC中,大多数时候是由客户端的页面通过ajax等方式向controller发送请求,但有时候需要在java代码中直接向controller发送请求,这时可以使用HttpCilent实 ...

  4. vue2.0项目实战(3)使用axios发送请求

    在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -> 尤 ...

  5. php使用curl模拟多线程发送请求

    每个PHP文件的执行是单线程的,但是php本身也可以用一些别的技术实现多线程并发比如用php-fpm进程,这里用curl模拟多线程发送请求.php的curl多线程是通过不断调用curl_multi_e ...

  6. Vue笔记:使用 axios 发送请求

    在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -> 尤 ...

  7. vue2.0项目实战使用axios发送请求

    在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -> 尤 ...

  8. socket发送请求,协程

    1.socket发送请求 #发送请求的方式 #方式一 import requests ret = requests.get("https://www.baidu.com/s?wd=abc&q ...

  9. RestTemplate发送请求并携带header信息

    1.使用restTemplate的postForObject方法 注:目前没有发现发送携带header信息的getForObject方法. HttpHeaders headers = new Http ...

随机推荐

  1. TopCoder SRM500 Div1 1000 其他

    原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-1000.html SRM500 Div1 1000 设 \(v_1,v_2,\cdots ,v_9 ...

  2. 51Nod1634 刚体图 动态规划 容斥原理 排列组合

    原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1634.html 题目传送门 - 51Nod1634 题意 基准时间限制:1 秒 空间限制:13107 ...

  3. .bat批处理添加Python任务

    一.常用命令含义 例一.多进程python 任务  --  start 命令 @echo offstart python C:\Users\ntitled\n\update_restt\test_ba ...

  4. 062 SparkStream内部原理

    1.DStream 内部是一系列的RDD组成的,每个RDD与RDD的产生时间形成一个pair保存在内存中(下面有) RDD包含了对应时间段的所有block数据. 2.DStream下的方法 /** T ...

  5. Jenkins的介绍

    在公司看见有的部门在使用这个工具,好奇一下,今天就开始学习一番. 1.官网 https://jenkins.io/ 2.介绍 Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用 ...

  6. oracle中date数据的转换问题

    (TO_NUMBER(TO_CHAR(FP.KPRQ, 'HH24')) >= 18 kprq >= to_DATE ('2017-01-12 18:00:00','yyyy-MM-dd ...

  7. linux下安装node踩坑总结

    1.在node官网下载linux二进制文件(确定文件的类型)本文以二进制文件为例 2.放入linux的对应目录下之后: tar -xvf node-v10.15.3-linux-x64.tar.xz ...

  8. [洛谷P1886]滑动窗口 (单调队列)(线段树)

    ---恢复内容开始--- 这是很好的一道题 题目描述: 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口. 现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的 ...

  9. switch语句以及三种循环语句的总结

    1:switch语句(1)格式:switch(表达式) {case 值1:语句体1;break;case 值2:语句体2;break;...default:语句体n+1;break;} 格式解释说明: ...

  10. 解决Intellij IDEA部署JavaWeb项目 404问题

    今天朋友问了我一个问题,他的公司项目用idea启动tomcat是成功的, 但是访问页面是404.一般来说,这个问题普遍都是打war包的时候配置有一定的问题导致的. 检查一下Project Struct ...