zoukankan      html  css  js  c++  java
  • 使用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     }
  • 相关阅读:
    【记录】Excel 中VLOOPUP 使用心得
    【记录】Mybatis-plus中Page插件 快速进行分页操作
    【记录】mybatis-plus 更新字段的三种策略解析
    Instant Client连接数据库
    python3安装沙盒环境
    redis配置哨兵模式
    redis主从配置
    mongodb4.2主从(副本集附仲裁节点)部署带认证模式
    主从数据不一致导出同步错误(主库删除记录,从库不存在)
    批量执行redis命令
  • 原文地址:https://www.cnblogs.com/xiaosiyuan/p/6726668.html
Copyright © 2011-2022 走看看