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,Map paramStr){ super(); this.url=url; this.paramStr=paramStr; } publicStringgetUrl(){ returnurl; } publicvoidsetUrl(Stringurl){ this.url=url; } publicMap getParamStr(){ returnparamStr; } publicvoidsetParamStr(Map paramStr){ 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{ List params=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(); } } privateList setHttpNameValues(Map paramMap){ List params=newArrayList (); for(Entry entry: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"; Map paramStr=getHttpParamStr(); pool.execute(newServiceThreadTest(url,paramStr)); } } publicstaticMap getHttpParamStr(){ Map param=newHashMap (); param.put("apiversion",1); param.put("appversion","3.6.2"); returnparam; } }
以上就是本次分享的关于java模拟多线程http请求的全部内容,感谢大家对毛票票的支持。