摘要:文件引入请求工具工具发送请求,参数是开始请求参数创建对象创建对象配置请求参数设置参数和请求方式解决中文乱码问题执行请求异常请求参数,异常信息结束请求参数返回数据异步执行请求和并发测试异步执行请求执行并返回结果模拟并发测试模拟并发
POM文件引入httpclient
http 请求工具org.apache.httpcomponents httpclient 4.5.3
package com.raytoo.common.toolbox.http; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.config.CookieSpecs; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * http 工具 */ public class HttpTool { private static Logger logger = LoggerFactory.getLogger(HttpTool.class); private static String ENCODING = "UTF-8"; private static String CONTENT_TYPE = "application/json"; /** * 发送POST请求,参数是JSON */ public static String requestPost(String url, String jsonParam){ logger.info("HttpTool.requestPost 开始 请求url:" + url + ", 参数:" + jsonParam); //创建HttpClient对象 CloseableHttpClient client = HttpClients.createDefault(); //创建HttpPost对象 HttpPost httpPost = new HttpPost(url); //配置请求参数 RequestConfig requestConfig = RequestConfig.custom() .setCookieSpec(CookieSpecs.DEFAULT) .setExpectContinueEnabled(true) .setSocketTimeout(5000) .setConnectTimeout(5000) .setConnectionRequestTimeout(5000) .build(); httpPost.setConfig(requestConfig); String respContent = null; //设置参数和请求方式 StringEntity entity = new StringEntity(jsonParam,ENCODING);//解决中文乱码问题 entity.setContentEncoding(ENCODING); entity.setContentType(CONTENT_TYPE); httpPost.setEntity(entity); HttpResponse resp; try { //执行请求 resp = client.execute(httpPost); if(resp.getStatusLine().getStatusCode() == 200) { HttpEntity responseObj = resp.getEntity(); respContent = EntityUtils.toString(responseObj,"UTF-8"); } } catch (IOException e) { e.printStackTrace(); logger.info("HttpTool.requestPost 异常 请求url:" + url + ", 参数:" + jsonParam + ",异常信息:" + e); } logger.info("HttpTool.requestPost 结束 请求url:" + url + ", 参数:" + jsonParam + ""); //返回数据 return respContent; } }异步执行HTTP请求和并发测试demo
package com.raytoo.common.toolbox.http; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import com.alibaba.fastjson.JSON; import com.google.common.collect.Lists; /** * 异步执行HTTP请求 */ public class HttpCallable implements Callable{ private String url; private String jsonParams; public HttpCallable(String url, String jsonParams){ this.url = url; this.jsonParams = jsonParams; } /** * 执行并返回结果 */ @Override public String call() throws Exception { return HttpTool.requestPost(url, jsonParams); } /** * 模拟并发测试 */ public static void main(String[] args) throws InterruptedException, ExecutionException { //模拟并发数 int concurrencyNumber = 1000; List resList = Lists.newArrayList(); //执行线程池 ExecutorService ex = Executors.newFixedThreadPool(100); String url = "www.baidu.com"; Map mapPatam = new HashMap<>(); mapPatam.put("name", "测试"); for(int i =0 ; i< concurrencyNumber; i++){ Future callRes = ex.submit(new HttpCallable(url, JSON.toJSONString(mapPatam))); resList.add(i + ">>>" + callRes.get()); } for(String s : resList){ System.out.println("------>" + s); } } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67305.html
摘要:最近在维护一个三年前的旧代码,用的是框架。单元测试和语言并发控制实际上是个蛋疼的问题,夸张一点说,当时的并不能特别轻松地实现并发,甚至不能实现并发。语言的功能之一就是自带单元测试。用语言之前,我的习惯是不写单元测试。 最近在维护一个三年前的旧代码,用的是laravel框架。 从某些方面来讲,这个代码算是比较标准为了实现在规定的时间内完成相关功能,同时程序员水平不高、经过大量优化之后,变...
摘要:我们公司某团队开发了一个服务,现在我接到任务,要测试这个服务在高并发访问场景下的性能指标,比如万个请求同时到来后,每个请求的平均响应时间,因此我选择了这个好用的工具来模拟高并发请求。创建,主要用途当然是显示测试结果了。 For project reason I have to measure the performance of OData service being accessed...
摘要:可靠性测试或称稳定性测试,健壮性测试。分析诊断和调节阶段主要测量系统性能并使负载测试进入下一级别,重点查找问题原因以帮助开发工程师迅速解决问题,并实时调节系统参数以提高性能。 ...
阅读 1750·2021-10-13 09:39
阅读 1319·2019-08-30 13:58
阅读 1413·2019-08-29 16:42
阅读 3562·2019-08-29 15:41
阅读 2993·2019-08-29 15:11
阅读 2475·2019-08-29 14:10
阅读 3408·2019-08-29 13:29
阅读 2090·2019-08-26 13:27