当前位置: 移动技术网 > IT编程>开发语言>Java > java模拟多线程http请求代码分享

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

2019年07月19日  | 移动技术网IT编程  | 我要评论

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请求的全部内容,感谢大家对移动技术网的支持。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网