packagecn.smartercampus.core.util;import javax.net.ssl.*;importjavax.servlet.http.HttpServletRequest;importorg.apache.commons.lang.StringUtils;import java.io.*;importjava.net.HttpURLConnection;importjava.net.URL;importjava.net.URLEncoder;importjava.security.cert.X509Certificate;importjava.util.HashMap;importjava.util.Map;public classHttpsPostUtil {//添加主机名验证程序类,设置不验证主机
private final static HostnameVerifier DO_NOT_VERIFY = newHostnameVerifier() {public booleanverify(String hostname, SSLSession session) {return true;
}
};//添加信任主机
private static voidtrustAllHosts() {//创建不验证证书链的信任管理器 这里使用的是x509证书
TrustManager[] trustAllCerts = new TrustManager[]{newMyX509TrustManager() {publicjava.security.cert.X509Certificate[] getAcceptedIssuers() {return newjava.security.cert.X509Certificate[]{};
}public voidcheckClientTrusted(X509Certificate[] chain, String authType) {
}public voidcheckServerTrusted(X509Certificate[] chain, String authType) {
}
}};//安装所有信任的信任管理器
try{
SSLContext sc= SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, newjava.security.SecureRandom());//HttpsURLConnection通过SSLSocket来建立与HTTPS的安全连接,SSLSocket对象是由SSLSocketFactory生成的。
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}catch(Exception e) {
e.printStackTrace();
}
}/*** 发送post 数据
*@paramurls
*@return
*/
public staticString heart(String urls, String param, String contentType, String method) {
StringBuffer sb=newStringBuffer();
DataOutputStream out= null;
BufferedReader responseReader= null;
InputStream in1= null;try{
trustAllHosts();//创建url资源
URL url = newURL(urls);//建立http连接
HttpsURLConnection conn =(HttpsURLConnection) url.openConnection();
conn.setHostnameVerifier(DO_NOT_VERIFY);//设置不用缓存
conn.setUseCaches(false);//设置允许输出
conn.setDoOutput(true);//设置允许输入
conn.setDoInput(true);//设置传递方式
conn.setRequestMethod(method);//System.out.println(conn.getRequestMethod());//设置维持长连接
conn.setRequestProperty("Connection", "Keep-Alive");//设置文件字符集:
conn.setRequestProperty("Charset", "UTF-8");//转换为字节数组//byte[] data = (param).getBytes();// //设置文件长度//conn.setRequestProperty("Content-Length", String.valueOf(data.length));//设置文件类型:
conn.setRequestProperty("Content-Type", contentType);
conn.setRequestProperty("Authorization", param);//开始连接请求
conn.connect();
out= newDataOutputStream(conn.getOutputStream());//写入请求的字符串
out.writeBytes(param);
out.flush();//System.out.println(conn.getResponseCode());//请求返回的状态
if (HttpURLConnection.HTTP_OK ==conn.getResponseCode()) {
System.out.println("连接成功");//请求返回的数据
in1 =conn.getInputStream();
String readLine;
responseReader= new BufferedReader(newInputStreamReader(in1));while((readLine=responseReader.readLine()) != null){
sb.append(readLine).append("\n");
}
}else{
System.out.println("error++");
}
}catch(Exception e) {
}finally{try{if (null !=responseReader)
responseReader.close();if (null !=in1)
in1.close();
}catch(Exception e) {}try{
out.close();
}catch(Exception e) {}
}returnsb.toString();
}/*** 发送post 数据
*@paramurls
*@return
*/
public staticString sendPost(String urls, String param, String contentType, String method) {
StringBuffer sb=newStringBuffer();
DataOutputStream out= null;
BufferedReader responseReader= null;
InputStream in1= null;try{
trustAllHosts();//创建url资源
URL url = newURL(urls);//建立http连接
HttpsURLConnection conn =(HttpsURLConnection) url.openConnection();
conn.setHostnameVerifier(DO_NOT_VERIFY);//设置不用缓存
conn.setUseCaches(false);//设置允许输出
conn.setDoOutput(true);//设置允许输入
conn.setDoInput(true);//设置传递方式
conn.setRequestMethod(method);//System.out.println(conn.getRequestMethod());//设置维持长连接
conn.setRequestProperty("Connection", "Keep-Alive");//设置文件字符集:
conn.setRequestProperty("Charset", "UTF-8");//转换为字节数组//byte[] data = (param).getBytes();// //设置文件长度//conn.setRequestProperty("Content-Length", String.valueOf(data.length));//设置文件类型:
conn.setRequestProperty("Content-Type", contentType);//开始连接请求
conn.connect();
out= newDataOutputStream(conn.getOutputStream());//写入请求的字符串
out.writeBytes(param);
out.flush();//System.out.println(conn.getResponseCode());//请求返回的状态
if (HttpURLConnection.HTTP_OK ==conn.getResponseCode()) {
System.out.println("连接成功");//请求返回的数据
in1 =conn.getInputStream();
String readLine;
responseReader= new BufferedReader(newInputStreamReader(in1));while((readLine=responseReader.readLine()) != null){
sb.append(readLine).append("\n");
}
}else{
System.out.println("error++");
}
}catch(Exception e) {
}finally{try{if (null !=responseReader)
responseReader.close();if (null !=in1)
in1.close();
}catch(Exception e) {}try{
out.close();
}catch(Exception e) {}
}returnsb.toString();
}/*** map转url参数*/
public static String map2Url(MapparamToMap) {if (null == paramToMap ||paramToMap.isEmpty()) {return null;
}
StringBuffer url= newStringBuffer();boolean isfist = true;for (Map.Entryentry : paramToMap.entrySet()) {if(isfist) {
isfist= false;
}else{
url.append("&");
}
url.append(entry.getKey()).append("=");
String value=entry.getValue();if (!StringUtils.isEmpty(value)) {
url.append(value);
}
}returnurl.toString();
}public static voidmain(String[] args) {
System.out.println("123");
Map params = new HashMap();
params.put("client_id", "xx.cn");
params.put("client_secret", "UY83SNFJWLU32NJSLJIK");
params.put("code", "40ce7f41d6562e47dbdc33593ddce1b46444cdb93514b3aaced7be90eb51a16f");
params.put("grant_type", "authorization_code");
params.put("redirect_uri", "xxn/index.jsp");//要发送的POST请求url?Key=Value&Key2=Value2&Key3=Value3的形式//application/json;charset=UTF-8 application/x-www-form-urlencoded;charset=UTF-8
String sb = sendPost("https://id.pdedu.sh.cn/connect/token",map2Url(params),"application/x-www-form-urlencoded;charset=UTF-8","POST");//System.out.println(sb);
}
}