package com.fzzy.gateway.util; import lombok.extern.slf4j.Slf4j; 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.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.Map; /** * 网关专用HTTP请求工具类 */ @Slf4j public class GatewayHttpUtil { private static final int TIMEOUT_IN_MILLIONS = 5000; /** * 执行GET请求 * * @param url * @param paramsMap * @return * @throws Exception */ public static String doGet(String url, Map paramsMap) throws Exception { CloseableHttpClient client = HttpClients.createDefault(); String responseText = ""; CloseableHttpResponse response = null; try { String getUrl = url + "?"; if (paramsMap != null) { for (Map.Entry param : paramsMap.entrySet()) { // getUrl += param.getKey() + "=" + URLEncoder.encode(param.getValue(), "UTF-8") + "&"; getUrl += param.getKey() + "=" + URLEncoder.encode(param.getValue(), "UTF-8") + "&"; } } HttpGet method = new HttpGet(getUrl); method.setHeader("Accept", "application/json"); method.setHeader("charset", "utf-8"); response = client.execute(method); // response.setHeader("Accept", "application/json"); // response.setHeader("charset", "UTF-8"); HttpEntity entity = response.getEntity(); if (entity != null) { responseText = EntityUtils.toString(entity, "UTF-8"); } } catch (Exception e) { log.error("http request failed--{}", e.getMessage()); } finally { try { if (null != response) response.close(); } catch (Exception e) { log.error("", e); } } return responseText; } public static String doGet(String urlStr) { URL url = null; HttpURLConnection conn = null; InputStream is = null; ByteArrayOutputStream baos = null; try { url = new URL(urlStr); conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(TIMEOUT_IN_MILLIONS); conn.setConnectTimeout(TIMEOUT_IN_MILLIONS); conn.setRequestMethod("GET"); conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("Content-Type", "application/json"); if (conn.getResponseCode() == 200) { is = conn.getInputStream(); baos = new ByteArrayOutputStream(); int len = -1; byte[] buf = new byte[128]; while ((len = is.read(buf)) != -1) { baos.write(buf, 0, len); } baos.flush(); return baos.toString(); } else { throw new RuntimeException(" responseCode is not 200 ... "); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (is != null) is.close(); } catch (IOException e) { } try { if (baos != null) baos.close(); } catch (IOException e) { } conn.disconnect(); } return null; } }