1. 程式人生 > >java模擬多執行緒http請求

java模擬多執行緒http請求

package test;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
 
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
 
/**java 模擬測試多執行緒測試http請求
 * @author wdh
 *
 */
 
public class ServiceThreadTest implements Runnable{
		
	private String url;
	
	private Map<String,Object> paramStr;
	
	public ServiceThreadTest(String url, Map<String,Object> paramStr) {
		super();
		this.url = url;
		this.paramStr = paramStr;
	}
 
	
	public String getUrl() {
		return url;
	}
 
 
	public void setUrl(String url) {
		this.url = url;
	}
 
 
	public  Map<String,Object> getParamStr() {
		return paramStr;
	}
 
 
	public void setParamStr(Map<String,Object> paramStr) {
		this.paramStr = paramStr;
	}
 
 
	@Override
	public void run() {
               // http請求實現方式
		CloseableHttpClient httpClient = HttpClients.createDefault();
		HttpPost post = new HttpPost(url);
		RequestConfig config = RequestConfig.custom().setConnectionRequestTimeout(10000).setConnectTimeout(10000)
				.setSocketTimeout(10000).build();
		CloseableHttpResponse response = null;
		try {
			List<NameValuePair> params = setHttpNameValues(paramStr);  
		    HttpEntity httpentity=new UrlEncodedFormEntity(params,"utf-8");
			post.setEntity(httpentity);
			post.setConfig(config);
			response = httpClient.execute(post);	
			HttpEntity entity = response.getEntity();
			String content = EntityUtils.toString(entity);
			System.out.println("content:" + content);
		} catch (Exception e) {
			e.printStackTrace();
		}			
	}	
	
	private List<NameValuePair> setHttpNameValues(Map<String,Object> paramMap) {
		List<NameValuePair> params = new ArrayList<NameValuePair>(); 
		for (Entry<String, Object> entry:paramMap.entrySet()){
			  params.add(new BasicNameValuePair(entry.getKey(),entry.getValue().toString()));  
		}
	  
		return params;
	}
 
 
	public static void main(String[] args) {
             //運用java工具類中執行緒池
		ExecutorService  pool = Executors.newCachedThreadPool();
		for (int i =0;i<2;i++) { //開啟倆個執行緒
			String url = "xxxx";
			Map<String,Object> paramStr = getHttpParamStr();
			pool.execute(new ServiceThreadTest(url,paramStr));
		}
	}
 
	public  static Map<String,Object> getHttpParamStr() {
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("apiversion", 1);
		param.put("appversion", "3.6.2");
		return param;
	}
}

連結:https://blog.csdn.net/net343/article/details/75460649