小編這段時間在寫淘客的項目,需要用到這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));
}
參數已經請求打印出來了
希望這篇文章對您有幫助。