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));
}

參數已經請求打印出來了

 

 

希望這篇文章對您有幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM