欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

java模拟多线程http请求代码分享

时间:2021-08-01 08:55:59|栏目:JAVA代码|点击:

java模拟http发送请求,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求,

实例代码:

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;
	}
}

上一篇:IDEA入门级使用教程你居然还在用eclipse?

栏    目:JAVA代码

下一篇:java代码实现mysql分表操作(用户行为记录)

本文标题:java模拟多线程http请求代码分享

本文地址:http://www.codeinn.net/misctech/163211.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有