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

 更新时间:2018年05月26日 14:43:10   作者:net343  
本篇文章给大家分享了java模拟多线程http请求的相关实例代码,对此有需要的可以跟着测试下。

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请求的全部内容,感谢大家对脚本之家的支持。

相关文章

  • 深入解析Java并发程序中线程的同步与线程锁的使用

    深入解析Java并发程序中线程的同步与线程锁的使用

    这篇文章主要介绍了深入解析Java并发编程中线程的同步与线程锁的使用,synchronized和lock是Java中最常见的控制线程的方法,需要的朋友可以参考下
    2016-03-03
  • SpringBoot中Bean生命周期自定义初始化和销毁方法详解

    SpringBoot中Bean生命周期自定义初始化和销毁方法详解

    这篇文章给大家详细介绍了SpringBoot中Bean生命周期自定义初始化和销毁方法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • gson对象序列化的示例

    gson对象序列化的示例

    本文介绍如何将Java对象序列化为Json文件,然后读取该Json文件读取回Java对象。在下面的示例中,我们创建了一个Student类。然后生成一个student.json文件,该文件将具有Student对象的json数据。
    2020-11-11
  • Java 数据库连接池Druid 的介绍

    Java 数据库连接池Druid 的介绍

    这篇文章主要给大家分享的是 Java 数据库连接池Druid 的介绍,Druid是一个JDBC组件,它包括三部分: DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。 DruidDataSource 高效可管理的数据库连接池,下面来看看文中的详细内容,需要的朋友也可以参考一下
    2021-11-11
  • Java中ArrayList与顺序表的定义与实现方法

    Java中ArrayList与顺序表的定义与实现方法

    ArrayList是一个实现List接口的类,底层是动态类型顺序表,本质也就是数组,动态主要体现在它的扩容机制,下面这篇文章主要给大家介绍了关于Java中ArrayList与顺序表的定义与实现的相关资料,需要的朋友可以参考下
    2022-07-07
  • Java Servlet响应httpServletResponse过程详解

    Java Servlet响应httpServletResponse过程详解

    HttpServletResponse是处理http响应的对象,调用该对象的方法,设置到对象属性的内容,tomcat最终会组织为http响应报文
    2022-02-02
  • mybatis实现一对一关联映射实例代码

    mybatis实现一对一关联映射实例代码

    这篇文章主要给大家介绍了关于mybatis实现一对一关联映射的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • 浅谈Java自定义注解和运行时靠反射获取注解

    浅谈Java自定义注解和运行时靠反射获取注解

    下面小编就为大家带来一篇浅谈Java自定义注解和运行时靠反射获取注解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • JAVA纯代码导出PDF文件实现方式

    JAVA纯代码导出PDF文件实现方式

    本文介绍了作者通过突发奇想发布了生成PDF的博客,最初,作者通过将Word文件转换为PDF文件实现导出PDF功能,但效果不尽如人意,后来,作者尝试直接生成PDF文件,并修复了生成PDF时出现的小瑕疵,通过导入依赖、下载接口和下载方法的实现
    2025-01-01
  • Java中Cglib代理和JDK代理的区别详解

    Java中Cglib代理和JDK代理的区别详解

    这篇文章主要介绍了Java中Cglib代理和JDK代理的区别详解,Cglib代理功能更强,无论目标类是否实现了接口都可以代理,他是基于继承的方式来代理目标类,如果目标类也实现了接口,代理类也会实现一次,需要的朋友可以参考下
    2023-09-09

最新评论