java模拟http发送请求,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求,
实例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
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; * @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请求的全部内容,感谢大家对服务器之家的支持。
原文链接:https://blog.csdn.net/net343/article/details/75460649