zoukankan      html  css  js  c++  java
  • java 访问get接口请求外部的json数据

    2020年4月24日 1030点热度 0人点赞 0条评论

    小编这段时间在写淘客的项目,需要用到这get请求,小编就顺便做一下笔记。

    Java访问get请求,前端的Ajax也可以做,但是第三方的api接口都是有一个文件加密的,这种加密第三方api接口只提供了后端访问,也或者说后端有这个方便处理加密的问题,而JS就没有,所以有时候不得不用后端请求数据。

    jar包

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.6</version>
    </dependency>

    工具类(HttpUtils)

    package cn.dt2008.util;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.TreeMap;
    
    public class HttpUtils {
    
        /**
         * get请求不带参数
         * @param url 访问json数据接口
         * @return
         */
        public static String doGet(String url) {
            CloseableHttpClient client = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet(url);
            CloseableHttpResponse response = null;
            try {
                response = client.execute(httpGet);
                HttpEntity entity = response.getEntity();
                return EntityUtils.toString(entity, "UTF-8");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (response != null) {
                    try {
                        response.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                try {
                    client.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
        
        /**
         * get请求带参数
         * @param getUrl 访问json数据接口
         * @param paraMap 参数
         * @return
         */
        public static String sendGet(String getUrl,Map<String, String> paraMap){
            if(paraMap == null){
                paraMap = new HashMap<>();
            }
            paraMap= new TreeMap<>(paraMap);
            StringBuilder sb = new StringBuilder();
            paraMap.entrySet().stream().forEach(entry ->{
                sb.append(entry.getKey());
                sb.append("=");
                sb.append(entry.getValue());
                sb.append("&");
            });
            getUrl = getUrl.contains("?")?getUrl:getUrl+"?";
            return doGet(getUrl+sb.toString());
        }
    }
    

    上面两个方法都写注释了,一个是带参数的(doGet(URL)),一个是不带参数的(sendGet(URL, 请求参数))

    小编用了 枫瑞博客网 的列表接口做一次案例

    doGet(URL)请求(不带参数)

    @Test
    public void doGet(){
        String url = "https://www.frbkw.com//wp-json/wp/v2/posts";
        System.out.println(HttpUtils.doGet(url));
    }

    sendGet(URL, 请求参数)请求(带参数)

    小编做一个列表分页

    @Test
    public void sendGet(){
        String url = "https://www.frbkw.com//wp-json/wp/v2/posts";
        Map<String, String> paraMap = new HashMap<>();
        paraMap.put("page", "2");
        System.out.println(HttpUtils.sendGet(url, paraMap));
    }

    参数已经请求打印出来了

    希望这篇文章对您有帮助。

  • 相关阅读:
    在HTML中使用JavaScript
    网站发布流程
    React组件
    React渲染和事件处理
    Java IO(三)
    Java IO(二)
    Java IO(一)
    Java常用类库
    Java集合框架(四)
    Java集合框架(三)
  • 原文地址:https://www.cnblogs.com/telwanggs/p/14528264.html
Copyright © 2011-2022 走看看