package com.springboot.test;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.*;
import java.util.Map.Entry;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
/**
* https工具类
*
* @author remainsu
* 2019-05-05
*/
public class HttpsUtil {
public static void main(String[] args) {
String url="https://open-gw-test.hisense.com/tms/wechat/selectDcode?user_key=3de5431d06f5d06696aee21af08159c2";
Map<String,String> map=new HashMap<>();
// map.put("carTel","15689926052");
// map.put("latitude","36.066111");
// map.put("longitude","120.38897200000001");
// map.put("scanCode","2031484");
// Object result=httpsPost(url,map);
String json="{\n" +
" \n" +
"\"carTel\": \"15689926052\" ,\n" +
"\"latitude\": 36.066111,\n" +
"\"longitude\": 120.38897200000001,\n" +
"\"scanCode\": \"2031484\" \n" +
"}";
Object result=sendHttpsPostJsonData(url,json);
System.out.println(">>>>result>>>>>>"+result);
}
/**
* @Title: sendHttpsPostRequest
* @Description: https发送POST请求(utf-8编码)
* @param reqUrl 请求url
* @param req 请求json数据
* @return
*/
public static String sendHttpsPostJsonData(String reqUrl, String req) {
HttpClient httpClient = null;
HttpPost httpPost = null;
String result = null;
try {
httpClient = new SSLClient();
httpPost = new HttpPost(reqUrl);
StringEntity entity = new StringEntity(req, "UTF-8");
entity.setContentType("application/json;charset=utf-8");
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);
if (response != null) {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
result = EntityUtils.toString(resEntity, "UTF-8");
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
/**
* post方式访问
* @param url 路径
* @param map 参数
* @return
*/
public static String httpsPost(String url, Map<String, String> map) {
String charset = "UTF-8";
HttpClient httpClient = null;
HttpPost httpPost = null;
String result = null;
try {
httpClient = new SSLClient();
httpPost = new HttpPost(url);
//设置参数
List<NameValuePair> list = new ArrayList<NameValuePair>();
Iterator iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, String> elem = (Entry<String, String>) iterator.next();
list.add(new BasicNameValuePair(elem.getKey(), elem.getValue()));
}
if (list.size() > 0) {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, charset);
httpPost.setEntity(entity);
}
HttpResponse response = httpClient.execute(httpPost);
if (response != null) {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
result = EntityUtils.toString(resEntity, charset);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
/**
* get方式访问(如果有参数直接 ?xx&yy&zz 的方式即可)
* @param url
* @return
*/
public String httpsGet(String url) {
String charset = "UTF-8";
HttpClient httpClient = null;
HttpGet httpGet= null;
String result = null;
try {
httpClient = new SSLClient();
httpGet = new HttpGet(url);
HttpResponse response = httpClient.execute(httpGet);
if(response != null){
HttpEntity resEntity = response.getEntity();
if(resEntity != null){
result = EntityUtils.toString(resEntity,charset);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
class SSLClient extends DefaultHttpClient {
//用于进行Https请求的HttpClient
public SSLClient() throws Exception {
super();
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain,String authType) throws CertificateException { }
public void checkServerTrusted(X509Certificate[] chain,String authType) throws CertificateException { }
public X509Certificate[] getAcceptedIssuers() {return null; }
};
ctx.init(null, new TrustManager[]{tm}, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
ClientConnectionManager ccm = this.getConnectionManager();
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register(new Scheme("https", 443, ssf));
}
}