package com.common.entity.utils; import okhttp3.*; import org.springframework.http.HttpStatus; import java.io.IOException; import java.net.SocketTimeoutException; import java.util.concurrent.TimeUnit; /** * @author zhiwei Liao * @version 1.0 * @Date 2021/5/8 17:20 */ public class HttpUtil { private static OkHttpClient client; private static final String DEFAULT_MEDIA_TYPE = "application/json; charset=utf-8"; private static final int CONNECT_TIMEOUT = 15; private static final int READ_TIMEOUT = 17; private static final String GET = "GET"; private static final String POST = "POST"; /** * 单例模式 获取类实例 * * @return client */ private static OkHttpClient getInstance() { if (client == null) { synchronized (OkHttpClient.class) { if (client == null) { client = new OkHttpClient.Builder() .connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS) .readTimeout(READ_TIMEOUT, TimeUnit.SECONDS) .build(); } } } return client; } public static void main(String[] args) { OkHttpClient client = new OkHttpClient().newBuilder() .build(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"messages\":[{\"from\":\"bamboo8\",\"destinations\":[{\"to\":\"0086 17717299170\"}],\"text\":\"1234 is your verification code\"}]}"); Request request = new Request.Builder() .url("https://qgk983.api.infobip.com/sms/2/text/advanced") .method("POST", body) .addHeader("Authorization", "Basic cWlhbmd5dTpxdWFkdGFsZW50QEI4") .addHeader("Content-Type", "application/json") .addHeader("Accept", "application/json") .build(); try { Response response = client.newCall(request).execute(); ResponseBody responseBody = response.body(); String result = responseBody.string(); System.out.println(result); } catch (IOException e) { e.printStackTrace(); } } public static String doGet(String url) throws Exception{ try { long startTime = System.currentTimeMillis(); Request request = new Request.Builder().url(url).build(); // 开启代理 String proxyHost = "127.0.0.1"; String proxyPort = "7890"; System.setProperty("http.proxyHost", proxyHost); System.setProperty("http.proxyPort", proxyPort); System.setProperty("https.proxyHost", proxyHost); System.setProperty("https.proxyPort", proxyPort); // 创建一个请求 Response response = getInstance().newCall(request).execute(); int httpCode = response.code(); String result; ResponseBody body = response.body(); if (body != null) { result = body.string(); addResponseLog(httpCode, result, startTime); } else { throw new Exception("exception in OkHttpUtil,response body is null"); } return handleHttpResponse(httpCode, result); } catch (Exception ex) { throw new Exception("http请求异常"); } } public static String doPost(Request request) throws Exception{ try { long startTime = System.currentTimeMillis(); // 开启代理 // String proxyHost = "127.0.0.1"; // String proxyPort = "7890"; // System.setProperty("http.proxyHost", proxyHost); // System.setProperty("http.proxyPort", proxyPort); // System.setProperty("https.proxyHost", proxyHost); // System.setProperty("https.proxyPort", proxyPort); // 创建一个请求 Response response = getInstance().newCall(request).execute(); int httpCode = response.code(); String result; ResponseBody body = response.body(); if (body != null) { result = body.string(); addResponseLog(httpCode, result, startTime); } else { throw new Exception("exception in OkHttpUtil,response body is null"); } return handleHttpResponse(httpCode, result); } catch (Exception ex) { throw new Exception("http请求异常"); } } private static void addResponseLog(int httpCode, String result, long startTime) { long endTime = System.currentTimeMillis(); } private static String handleHttpResponse(int httpCode, String result) throws Exception { if (httpCode == HttpStatus.OK.value()) { return result; } throw new Exception("invalid_token"); } private static void handleHttpThrowable(Exception ex, String url) throws Exception { if (ex instanceof Exception) { throw (Exception) ex; } if (ex instanceof SocketTimeoutException) { throw new RuntimeException("request time out of OkHttp when do url:" + url); } throw new RuntimeException(ex); } }