java模拟多线程http请求代码分享
java模拟http发送请求,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求,
实例代码:
packagetest;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importjava.util.Map.Entry;
importjava.util.concurrent.ExecutorService;
importjava.util.concurrent.Executors;
importorg.apache.http.HttpEntity;
importorg.apache.http.NameValuePair;
importorg.apache.http.client.config.RequestConfig;
importorg.apache.http.client.entity.UrlEncodedFormEntity;
importorg.apache.http.client.methods.CloseableHttpResponse;
importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.impl.client.CloseableHttpClient;
importorg.apache.http.impl.client.HttpClients;
importorg.apache.http.message.BasicNameValuePair;
importorg.apache.http.util.EntityUtils;
/**java模拟测试多线程测试http请求
*@authorwdh
*
*/
publicclassServiceThreadTestimplementsRunnable{
privateStringurl;
privateMapparamStr;
publicServiceThreadTest(Stringurl,MapparamStr){
super();
this.url=url;
this.paramStr=paramStr;
}
publicStringgetUrl(){
returnurl;
}
publicvoidsetUrl(Stringurl){
this.url=url;
}
publicMapgetParamStr(){
returnparamStr;
}
publicvoidsetParamStr(MapparamStr){
this.paramStr=paramStr;
}
@Override
publicvoidrun(){
//http请求实现方式
CloseableHttpClienthttpClient=HttpClients.createDefault();
HttpPostpost=newHttpPost(url);
RequestConfigconfig=RequestConfig.custom().setConnectionRequestTimeout(10000).setConnectTimeout(10000)
.setSocketTimeout(10000).build();
CloseableHttpResponseresponse=null;
try{
Listparams=setHttpNameValues(paramStr);
HttpEntityhttpentity=newUrlEncodedFormEntity(params,"utf-8");
post.setEntity(httpentity);
post.setConfig(config);
response=httpClient.execute(post);
HttpEntityentity=response.getEntity();
Stringcontent=EntityUtils.toString(entity);
System.out.println("content:"+content);
}catch(Exceptione){
e.printStackTrace();
}
}
privateListsetHttpNameValues(MapparamMap){
Listparams=newArrayList();
for(Entryentry:paramMap.entrySet()){
params.add(newBasicNameValuePair(entry.getKey(),entry.getValue().toString()));
}
returnparams;
}
publicstaticvoidmain(String[]args){
//运用java工具类中线程池
ExecutorServicepool=Executors.newCachedThreadPool();
for(inti=0;i<2;i++){//开启俩个线程
Stringurl="xxxx";
MapparamStr=getHttpParamStr();
pool.execute(newServiceThreadTest(url,paramStr));
}
}
publicstaticMapgetHttpParamStr(){
Mapparam=newHashMap();
param.put("apiversion",1);
param.put("appversion","3.6.2");
returnparam;
}
}
以上就是本次分享的关于java模拟多线程http请求的全部内容,感谢大家对毛票票的支持。