首页 > 编程 > Java > 正文

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

2019-11-26 09:57:09
字体:
来源:转载
供稿:网友

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

以上就是本次分享的关于java模拟多线程http请求的全部内容,感谢大家对武林网的支持。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表