java模拟多线程http请求
2017-07-20 09:51
387 查看
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请求代码分享
- Java多线程模拟多人过山洞
- 关于java模拟http请求的小错误
- 简单模拟Java中创建多线程的两种方法
- java模拟http请求上传文件,基于Apache的httpclient
- java 多线程模拟售票系统
- Java中使用多线程、curl及代理IP模拟post提交和get访问
- java多线程小例子:模拟两个窗口售票
- java多线程模拟生产者消费者问题,公司面试常常问的题。。。
- Java中使用多线程、curl及代理IP模拟post提交和get訪问
- 手撕代码(三)Java多线程模拟生产者消费者方法
- Java【多线程知识总结(9)】Timer类与TimerTask类的应用---模拟定时炸弹
- java 编写多线程应用程序,模拟多个人通过独木桥的模拟。 线程问题
- Java多线程 模拟 购买 退订 机票
- java多线程模拟2个窗口同时卖车票100张
- Java【多线程知识总结(10)】线程通信之wait()与notify()的运用--模拟指挥官指挥2个连队交替轰炸战区
- 用java多线程操作模拟售票系统
- java多线程之火车售票系统模拟
- java多线程实例-模拟购票
- JAVA多线程模拟生产者与消费者_实例