成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用HttpClient模擬并發(fā)請求 - 壓力測試

Charlie_Jade / 1616人閱讀

摘要:文件引入請求工具工具發(fā)送請求,參數(shù)是開始請求參數(shù)創(chuàng)建對象創(chuàng)建對象配置請求參數(shù)設(shè)置參數(shù)和請求方式解決中文亂碼問題執(zhí)行請求異常請求參數(shù),異常信息結(jié)束請求參數(shù)返回?cái)?shù)據(jù)異步執(zhí)行請求和并發(fā)測試異步執(zhí)行請求執(zhí)行并返回結(jié)果模擬并發(fā)測試模擬并發(fā)

POM文件引入httpclient

        
            org.apache.httpcomponents
            httpclient
            4.5.3
        
http 請求工具
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";
    
    /**
     * 發(fā)送POST請求,參數(shù)是JSON
     */
    public static String requestPost(String url, String jsonParam){
        logger.info("HttpTool.requestPost 開始 請求url:" + url + ", 參數(shù):" + jsonParam);
        //創(chuàng)建HttpClient對象
        CloseableHttpClient client = HttpClients.createDefault();
        //創(chuàng)建HttpPost對象
        HttpPost httpPost = new HttpPost(url);
        
        //配置請求參數(shù)
        RequestConfig requestConfig = RequestConfig.custom()
                .setCookieSpec(CookieSpecs.DEFAULT)
                .setExpectContinueEnabled(true)
                .setSocketTimeout(5000)  
                .setConnectTimeout(5000)  
                .setConnectionRequestTimeout(5000)  
                .build();
        
        httpPost.setConfig(requestConfig);
        
        String respContent = null;
            
        //設(shè)置參數(shù)和請求方式
        StringEntity entity = new StringEntity(jsonParam,ENCODING);//解決中文亂碼問題    
        entity.setContentEncoding(ENCODING);    
        entity.setContentType(CONTENT_TYPE);  
        
        httpPost.setEntity(entity);
            
        HttpResponse resp;
        try {
            //執(zhí)行請求
            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 + ", 參數(shù):" + jsonParam + ",異常信息:" + e);
        }
        logger.info("HttpTool.requestPost 結(jié)束 請求url:" + url + ", 參數(shù):" + jsonParam + "");
        //返回?cái)?shù)據(jù)
        return respContent;
    }
}
異步執(zhí)行HTTP請求和并發(fā)測試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;

/**
 * 異步執(zhí)行HTTP請求
 */
public class HttpCallable implements Callable {
    
    private String url;
    
    private String jsonParams;
    
    public HttpCallable(String url, String jsonParams){
        this.url = url;
        this.jsonParams = jsonParams;
    }

    /**
     * 執(zhí)行并返回結(jié)果
     */
    @Override
    public String call() throws Exception {
        return HttpTool.requestPost(url, jsonParams);
    }
    
    /**
     * 模擬并發(fā)測試
     */
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        //模擬并發(fā)數(shù)
        int concurrencyNumber = 1000;
        
        List  resList = Lists.newArrayList();
        
        //執(zhí)行線程池
        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);
        }
    }

}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67305.html

相關(guān)文章

  • 三年前舊代碼的重構(gòu)、總結(jié)與反思

    摘要:最近在維護(hù)一個(gè)三年前的舊代碼,用的是框架。單元測試和語言并發(fā)控制實(shí)際上是個(gè)蛋疼的問題,夸張一點(diǎn)說,當(dāng)時(shí)的并不能特別輕松地實(shí)現(xiàn)并發(fā),甚至不能實(shí)現(xiàn)并發(fā)。語言的功能之一就是自帶單元測試。用語言之前,我的習(xí)慣是不寫單元測試。 最近在維護(hù)一個(gè)三年前的舊代碼,用的是laravel框架。 從某些方面來講,這個(gè)代碼算是比較標(biāo)準(zhǔn)為了實(shí)現(xiàn)在規(guī)定的時(shí)間內(nèi)完成相關(guān)功能,同時(shí)程序員水平不高、經(jīng)過大量優(yōu)化之后,變...

    Shihira 評論0 收藏0
  • 論性能測試

    摘要:吞吐量一般結(jié)合業(yè)務(wù)需求而定服務(wù)器資源占用占用率內(nèi)存使用率命中率篇是一種預(yù)測系統(tǒng)行為和性能的負(fù)載測試工具。負(fù)載測試與壓力測試都是性能測試。通過平臺接口可進(jìn)行合理的性能測試。有利于測試人員及時(shí)定位問題。 Part 1:性能測試 性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負(fù)載條件來對系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測試。 A. 類別 性能測試包括負(fù)載測試、壓力測試、基準(zhǔn)測試等。 i. 負(fù)...

    qpal 評論0 收藏0
  • 如何使用jMeter對某個(gè)OData服務(wù)進(jìn)行高并發(fā)性能測試

    摘要:我們公司某團(tuán)隊(duì)開發(fā)了一個(gè)服務(wù),現(xiàn)在我接到任務(wù),要測試這個(gè)服務(wù)在高并發(fā)訪問場景下的性能指標(biāo),比如萬個(gè)請求同時(shí)到來后,每個(gè)請求的平均響應(yīng)時(shí)間,因此我選擇了這個(gè)好用的工具來模擬高并發(fā)請求。創(chuàng)建,主要用途當(dāng)然是顯示測試結(jié)果了。 For project reason I have to measure the performance of OData service being accessed...

    qylost 評論0 收藏0
  • 軟件測試基礎(chǔ)——非功能測試入門

    摘要:可靠性測試或稱穩(wěn)定性測試,健壯性測試。分析診斷和調(diào)節(jié)階段主要測量系統(tǒng)性能并使負(fù)載測試進(jìn)入下一級別,重點(diǎn)查找問題原因以幫助開發(fā)工程師迅速解決問題,并實(shí)時(shí)調(diào)節(jié)系統(tǒng)參數(shù)以提高性能。 ...

    Zachary 評論0 收藏0

發(fā)表評論

0條評論

Charlie_Jade

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<