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;}@Overridepublic 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請求的全部內容,感謝大家對武林網的支持。