package com.taover.util; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.Charset; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import okhttp3.FormBody; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; public class UtilHttpByOkHttp { public static final String METHOD_GET = "GET"; public static final String METHOD_POST = "POST"; public static final String METHOD_DELETE = "DELETE"; public static final String METHOD_PUT = "PUT"; public static String sendGet(String url, final Map headers) throws Exception { //http头信息拼装 Request request = getRequestBuilder(url, headers).get().build(); return getHttpClient(url).newCall(request).execute().body().string(); } public static String sendPostForm(String url, final Map headers, final Map params) throws Exception { //请求体信息 RequestBody requestBody = getReqeustBody(params); //http头信息拼装 Request request = getRequestBuilder(url, headers).post(requestBody).build(); return getHttpClient(url).newCall(request).execute().body().string(); } public static String sendPutForm(String url, final Map headers, final Map params) throws Exception { //请求体信息 RequestBody requestBody = getReqeustBody(params); //http头信息拼装 Request request = getRequestBuilder(url, headers).put(requestBody).build(); return getHttpClient(url).newCall(request).execute().body().string(); } public static String sendPostString(String url, final Map headers, final String content) throws Exception{ //请求体 RequestBody requestBody = getReqeustBody(content); //http头信息拼装 Request request = getRequestBuilder(url, headers).post(requestBody).build(); return getHttpClient(url).newCall(request).execute().body().string(); } public static String sendPostJson(String url, final Map headers, String jsonStr) throws Exception{ //请求体 RequestBody requestBody = getReqeustBodyJson(jsonStr); //http头信息拼装 Request request = getRequestBuilder(url, headers).post(requestBody).build(); return getHttpClient(url).newCall(request).execute().body().string(); } public static String sendDelete(String url, final Map headers) throws Exception { //http头信息拼装 Request request = getRequestBuilder(url, headers).delete().build(); return getHttpClient(url).newCall(request).execute().body().string(); } public static byte[] downloadFile(String url, final Map headers) throws Exception{ Request request = getRequestBuilder(url, headers).get().build(); return getHttpClient(url).newCall(request).execute().body().bytes(); } private static OkHttpClient getHttpClient(String url){ if(url.trim().toLowerCase().startsWith("https")){ return buildOkHttpClientForHttps(); }else{ return new OkHttpClient(); } } private static RequestBody getReqeustBody(Map params){ //表单信息拼装 FormBody.Builder builder = new FormBody.Builder(Charset.forName("UTF-8")); if(params != null) { for(Map.Entry entry: params.entrySet()) { Object tempValue = entry.getValue(); if(tempValue.getClass().isArray()){ String[] tempValueArr = (String[])tempValue; for(int i=0; i headers){ //http头信息拼装 Request.Builder requestBuilder = new Request.Builder().url(url); if(headers != null){ for(Map.Entry entry: headers.entrySet()) { requestBuilder.addHeader(entry.getKey(), entry.getValue()); } } return requestBuilder; } private static OkHttpClient buildOkHttpClientForHttps() { OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.connectTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .writeTimeout(30,TimeUnit.SECONDS) .retryOnConnectionFailure(true) .sslSocketFactory(getTrustedSSLSocketFactory()) .hostnameVerifier(DO_NOT_VERIFY); return builder.build(); } static TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { X509Certificate[] x509Certificates = new X509Certificate[0]; return x509Certificates; } public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType) { } public void checkServerTrusted( java.security.cert.X509Certificate[] certs, String authType) { } } }; static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }; private static SSLSocketFactory getTrustedSSLSocketFactory() { try { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); return sc.getSocketFactory(); } catch (KeyManagementException | NoSuchAlgorithmException e) { e.printStackTrace(); return null; } } public static void main(String args[]){ String contactSsid = "lM4AeZSizgFROR/OAHmUos4BUTkf"; try { contactSsid = URLEncoder.encode(contactSsid, "UTF-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } String url = "https://ssep.umsapi.com/api/v1/contacts/"+contactSsid+"/messages"; System.out.println(url); Map headerData = new HashMap(); headerData.put("ss-token", "lsQUPZA2rxyckfmOD5gfnPAo9Qa6N1/EEESotlOah3t2392ZZkrhOofNAZF5zlyUrDS1Y29tLnNvbmdzaHUud2ViYXBwLnYx"); Map paramData = new HashMap(); paramData.put("kind", "text"); paramData.put("content", "小伙子 干得漂亮"); try { //System.out.println(UtilHttpByOkHttp.sendPostForm(url, headerData, paramData)); System.out.println(UtilHttpByOkHttp.sendGet("https://ssep.umsapi.com/api/v2/openapi/querycontacts?appid=songshuyun-ifun×tamp=1562239191&signature=967fd77a24cbbce872bc1506a0187983", null)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }