使用httpClient发送getpost请求

Posted 浅夏丶未央

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用httpClient发送getpost请求相关的知识,希望对你有一定的参考价值。

maven依赖

1 <dependency>
2       <groupId>org.apache.httpcomponents</groupId>
3       <artifactId>httpclient</artifactId>
4       <version>4.5.2</version>
5     </dependency>

GET请求:

1、参数直接拼接到URL后面,即http://test.com?a=1&b=2的形式

 1 /**
 2      * get请求,参数拼接在地址上
 3      * @param url 请求地址加参数
 4      * @return 响应
 5      */
 6     public String get(String url)
 7     {
 8         String result = null;
 9         CloseableHttpClient httpClient = HttpClients.createDefault();
10         HttpGet get = new HttpGet(url);
11         CloseableHttpResponse response = null;
12         try {
13             response = httpClient.execute(get);
14             if(response != null && response.getStatusLine().getStatusCode() == 200)
15             {
16                 HttpEntity entity = response.getEntity();
17                 result = entityToString(entity);
18             }
19             return result;
20         } catch (IOException e) {
21             e.printStackTrace();
22         }finally {
23             try {
24                 httpClient.close();
25                 if(response != null)
26                 {
27                     response.close();
28                 }
29             } catch (IOException e) {
30                 e.printStackTrace();
31             }
32         }
33         return null;
34     }

2、参数放置到一个map中

 1 /**
 2      * get请求,参数放在map里
 3      * @param url 请求地址
 4      * @param map 参数map
 5      * @return 响应
 6      */
 7     public String getMap(String url,Map<String,String> map)
 8     {
 9         String result = null;
10         CloseableHttpClient httpClient = HttpClients.createDefault();
11         List<NameValuePair> pairs = new ArrayList<NameValuePair>();
12         for(Map.Entry<String,String> entry : map.entrySet())
13         {
14             pairs.add(new BasicNameValuePair(entry.getKey(),entry.getValue()));
15         }
16         CloseableHttpResponse response = null;
17         try {
18             URIBuilder builder = new URIBuilder(url);
19             builder.setParameters(pairs);
20             HttpGet get = new HttpGet(builder.build());
21             response = httpClient.execute(get);
22             if(response != null && response.getStatusLine().getStatusCode() == 200)
23             {
24                 HttpEntity entity = response.getEntity();
25                 result = entityToString(entity);
26             }
27             return result;
28         } catch (URISyntaxException e) {
29             e.printStackTrace();
30         } catch (ClientProtocolException e) {
31             e.printStackTrace();
32         } catch (IOException e) {
33             e.printStackTrace();
34         }finally {
35             try {
36                 httpClient.close();
37                 if(response != null)
38                 {
39                     response.close();
40                 }
41             } catch (IOException e) {
42                 e.printStackTrace();
43             }
44         }
45 
46         return null;
47     }

POST请求:

1、参数放到map中

 1 /**
 2      * 发送post请求,参数用map接收
 3      * @param url 地址
 4      * @param map 参数
 5      * @return 返回值
 6      */
 7     public String postMap(String url,Map<String,String> map) {
 8         String result = null;
 9         CloseableHttpClient httpClient = HttpClients.createDefault();
10         HttpPost post = new HttpPost(url);
11         List<NameValuePair> pairs = new ArrayList<NameValuePair>();
12         for(Map.Entry<String,String> entry : map.entrySet())
13         {
14             pairs.add(new BasicNameValuePair(entry.getKey(),entry.getValue()));
15         }
16         CloseableHttpResponse response = null;
17         try {
18             post.setEntity(new UrlEncodedFormEntity(pairs,"UTF-8"));
19             response = httpClient.execute(post);
20             if(response != null && response.getStatusLine().getStatusCode() == 200)
21             {
22                 HttpEntity entity = response.getEntity();
23                 result = entityToString(entity);
24             }
25             return result;
26         } catch (UnsupportedEncodingException e) {
27             e.printStackTrace();
28         } catch (ClientProtocolException e) {
29             e.printStackTrace();
30         } catch (IOException e) {
31             e.printStackTrace();
32         }finally {
33             try {
34                 httpClient.close();
35                 if(response != null)
36                 {
37                     response.close();
38                 }
39             } catch (IOException e) {
40                 e.printStackTrace();
41             }
42 
43         }
44         return null;
45     }

2、参数是json字符串

 1 /**
 2      * post请求,参数为json字符串
 3      * @param url 请求地址
 4      * @param jsonString json字符串
 5      * @return 响应
 6      */
 7     public String postJson(String url,String jsonString)
 8     {
 9         String result = null;
10         CloseableHttpClient httpClient = HttpClients.createDefault();
11         HttpPost post = new HttpPost(url);
12         CloseableHttpResponse response = null;
13         try {
14             post.setEntity(new ByteArrayEntity(jsonString.getBytes("UTF-8")));
15             response = httpClient.execute(post);
16             if(response != null && response.getStatusLine().getStatusCode() == 200)
17             {
18                 HttpEntity entity = response.getEntity();
19                 result = entityToString(entity);
20             }
21             return result;
22         } catch (UnsupportedEncodingException e) {
23             e.printStackTrace();
24         } catch (ClientProtocolException e) {
25             e.printStackTrace();
26         } catch (IOException e) {
27             e.printStackTrace();
28         }finally {
29             try {
30                 httpClient.close();
31                 if(response != null)
32                 {
33                     response.close();
34                 }
35             } catch (IOException e) {
36                 e.printStackTrace();
37             }
38         }
39         return null;
40     }

entityToString方法:

 1 private String entityToString(HttpEntity entity) throws IOException {
 2         String result = null;
 3         if(entity != null)
 4         {
 5             long lenth = entity.getContentLength();
 6             if(lenth != -1 && lenth < 2048)
 7             {
 8                 result = EntityUtils.toString(entity,"UTF-8");
 9             }else {
10                 InputStreamReader reader1 = new InputStreamReader(entity.getContent(), "UTF-8");
11                 CharArrayBuffer buffer = new CharArrayBuffer(2048);
12                 char[] tmp = new char[1024];
13                 int l;
14                 while((l = reader1.read(tmp)) != -1) {
15                     buffer.append(tmp, 0, l);
16                 }
17                 result = buffer.toString();
18             }
19         }
20         return result;
21     }

 

以上是关于使用httpClient发送getpost请求的主要内容,如果未能解决你的问题,请参考以下文章

使用HttpClient 发送 GETPOST(FormDataRaw)PUTDelete请求及文件上传

Java HttpClient4.2.x版本getpost请求工具类

HttpClient发送get,post接口请求

对HttpClient实现的 HTTP 方法中getpost有无参数方法抽取一个公共类

URL编码解码和GETPOST请求

PHP使用 file_get_contents() 发送 GETPOST 请求