自测可用
1.证书类class
2.okhttp类class
-
public
class SSLSocketClient {
-
//获取这个SSLSocketFactory
-
public static SSLSocketFactory getSSLSocketFactory() {
-
try {
-
SSLContext sslContext = SSLContext.getInstance(
"SSL");
-
sslContext.init(
null, getTrustManager(),
new SecureRandom());
-
return sslContext.getSocketFactory();
-
}
catch (Exception e) {
-
throw
new RuntimeException(e);
-
}
-
}
-
//获取TrustManager
-
private
static TrustManager[] getTrustManager() {
-
TrustManager[] trustAllCerts =
new TrustManager[]{
-
new X509TrustManager() {
-
@Override
-
public void checkClientTrusted(X509Certificate[] chain, String authType) {
-
}
-
@Override
-
public void checkServerTrusted(X509Certificate[] chain, String authType) {
-
}
-
@Override
-
public X509Certificate[] getAcceptedIssuers() {
-
return
new X509Certificate[]{};
//okhttp 3.0 以前版本
-
-
return
new X509Certificate[
0] ;
//3.0后版本
-
}
-
}
-
};
-
return trustAllCerts;
-
}
-
//获取HostnameVerifier
-
public static HostnameVerifier getHostnameVerifier() {
-
HostnameVerifier hostnameVerifier =
new HostnameVerifier() {
-
@Override
-
public boolean verify(String s, SSLSession sslSession) {
-
return
true;
-
}
-
};
-
return hostnameVerifier;
-
}
-
}
-
public
class HttpUtil {
-
-
private
static
final Logger logger = LoggerFactory.getLogger(HttpUtil.class);
-
-
private
static
final OkHttpClient client =
new OkHttpClient().newBuilder()
-
.connectTimeout(
200, TimeUnit.SECONDS)
-
.readTimeout(
200, TimeUnit.SECONDS)
-
.retryOnConnectionFailure(
false)
-
.sslSocketFactory(SSLSocketClient.getSSLScocketFactory())
-
.hostnameVerifier(SSLSocketClient.getHostnameVerifier())
-
.build();
-
-
private
static
final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse(
"application/json; charset=utf-8");
-
-
private
static
final HttpUtil instance =
new HttpUtil();
-
-
private HttpUtil() {
-
-
}
-
-
public static HttpUtil getInstance() {
-
return instance;
-
}
-
-
/**
-
* 执行http post请求
-
* @param postBody
-
* @param url
-
* @return
-
*/
-
public String httpExecute(String postBody, String url,String tokenCode) {
-
Request request =
null ;
-
-
if(tokenCode !=
null && !
"".equals(tokenCode)) {
-
Headers headers =
new Headers.Builder()
-
.add(
"Authorization",tokenCode)
-
.add(
"Content-type",
"application/json;charset=utf-8")
-
.build();
-
request =
new Request.Builder().url(url)
-
.headers(headers)
-
.post(RequestBody.create(MEDIA_TYPE_MARKDOWN, postBody))
-
.build();
-
}
else {
-
request =
new Request.Builder()
-
.url(url)
-
.post(RequestBody.create(MEDIA_TYPE_MARKDOWN, postBody))
-
.build();
-
}
-
-
try {
-
System.out.println(
"request:"+ request);
-
Response response = client.newCall(request).execute();
-
logger.info(
"response:{}",response);
-
-
return response.body().string();
-
}
catch (Exception e) {
-
e.printStackTrace();
-
logger.debug(
" 网络调用异常httpExecute : {}", e);
-
}
-
return
null;
-
}
-
-
/**
-
* 转换成指定对象
-
*
-
* @param postBody
-
* @param url
-
* @param clazz
-
* @return
-
* @throws IOException
-
*/
-
public Object httpExecute(String postBody, String url, Class clazz,String tokenCode) {
-
-
String rString = httpExecute(postBody, url,tokenCode);
-
Object obj =
null ;
-
try {
-
Object obj = JSONObject.parseObject(rString, clazz);
-
}
catch (IOException e) {
-
e.printStackTrace();
-
}
-
-
-
return obj ;
-
-
}
-
}