摘要:文件引入請求工具工具發送請求,參數是開始請求參數創建對象創建對象配置請求參數設置參數和請求方式解決中文亂碼問題執行請求異常請求參數,異常信息結束請求參數返回數據異步執行請求和并發測試異步執行請求執行并返回結果模擬并發測試模擬并發
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); } } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67305.html
摘要:最近在維護一個三年前的舊代碼,用的是框架。單元測試和語言并發控制實際上是個蛋疼的問題,夸張一點說,當時的并不能特別輕松地實現并發,甚至不能實現并發。語言的功能之一就是自帶單元測試。用語言之前,我的習慣是不寫單元測試。 最近在維護一個三年前的舊代碼,用的是laravel框架。 從某些方面來講,這個代碼算是比較標準為了實現在規定的時間內完成相關功能,同時程序員水平不高、經過大量優化之后,變...
摘要:我們公司某團隊開發了一個服務,現在我接到任務,要測試這個服務在高并發訪問場景下的性能指標,比如萬個請求同時到來后,每個請求的平均響應時間,因此我選擇了這個好用的工具來模擬高并發請求。創建,主要用途當然是顯示測試結果了。 For project reason I have to measure the performance of OData service being accessed...
摘要:可靠性測試或稱穩定性測試,健壯性測試。分析診斷和調節階段主要測量系統性能并使負載測試進入下一級別,重點查找問題原因以幫助開發工程師迅速解決問題,并實時調節系統參數以提高性能。 ...
閱讀 1748·2021-10-13 09:39
閱讀 1317·2019-08-30 13:58
閱讀 1412·2019-08-29 16:42
閱讀 3561·2019-08-29 15:41
閱讀 2991·2019-08-29 15:11
閱讀 2470·2019-08-29 14:10
閱讀 3406·2019-08-29 13:29
閱讀 2087·2019-08-26 13:27