首先是三个返回的实体类
BaseVo.java
package https2;import java.io.Serializable;import java.lang.reflect.InvocationTargetException;import java.util.ArrayList;import java.util.List;public class BaseVo implements Serializable {private static final long serialVersionUID = 1L;public List<String> getField(Object model) {List<String> list = new ArrayList<String>();java.lang.reflect.Method[] method = model.getClass().getDeclaredMethods();// 获取对象所有方法for (java.lang.reflect.Method m : method) {if (m.getName().startsWith("get")) {// 获取get方法Object o = null;try {o = m.invoke(model);} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 执行if (o == null ) {list.add("");} else {list.add(o.toString());}}}return list;}}
PageVo.java
package https2;public class PageVo extends BaseVo {/** * ?*/private static final long serialVersionUID = 1L;private int current=1;//当前第几页private int currentNum=1;//当前第几页private int total;//总数private int pages;//页数private int number = 15;//每页多少条private String column;private String order;public int getCurrentNum() {return currentNum;}public String getColumn() {return column;}public void setColumn(String column) {this.column = column;}public String getOrder() {return order;}public void setOrder(String order) {this.order = order;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public int getCurrent() {return current;}public void setCurrent(int current) {this.current = current;this.currentNum = current;}public int getTotal() {return total;}public void setTotal(int total) {this.total = total;if(this.total%this.number==0){this.pages = this.total / this.number;}else{this.pages = this.total / this.number + 1;}}public int getPages() {return pages;}public void setPages(int pages) {this.pages = pages;}}
ResultVo.java
package https2;public class ResultVo extends BaseVo{/** * ?*/private static final long serialVersionUID = 1L;private String code;private String msg;private Object data;private PageVo page;public PageVo getPage() {return page;}public void setPage(PageVo page) {this.page = page;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}}
然后是一个工具类
package https2;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.SSLSession;public class HostnameVerifierUtil implements HostnameVerifier {@Overridepublic boolean verify(String hostname, SSLSession arg1) {if("localhost".equals(hostname)){ ?????????????return true; ?????????} else { ?????????????return false; ?????????} }}
最后是https请求工具类
package https2;import java.io.BufferedReader; ?import java.io.FileInputStream; ?import java.io.IOException; ?import java.io.InputStreamReader; ?import java.net.MalformedURLException; ?import java.net.URL; ?import java.security.GeneralSecurityException; ?import java.security.KeyStore; ?import javax.net.ssl.HttpsURLConnection; ?import javax.net.ssl.KeyManagerFactory; ?import javax.net.ssl.SSLContext; ?import javax.net.ssl.TrustManagerFactory; ?import cn.smartercampus.core.vo.ResultVo;import com.alibaba.fastjson.JSON; ?public class HttpsPost { ?????/** ?????* 获得KeyStore. ?????* @param keyStorePath ?????* ???????????密钥库路径 ?????* @param password ?????* ???????????密码 ?????* @return 密钥库 ?????* @throws Exception ?????*/ ?????public static KeyStore getKeyStore(String password, String keyStorePath) ?????????????throws Exception { ?????????// 实例化密钥库 ?????????KeyStore ks = KeyStore.getInstance("JKS"); ?????????// 获得密钥库文件流 ?????????FileInputStream is = new FileInputStream(keyStorePath); ?????????// 加载密钥库 ?????????ks.load(is, password.toCharArray()); ?????????// 关闭密钥库文件流 ?????????is.close(); ?????????return ks; ?????} ?????????/** ?????* 获得SSLSocketFactory. ?????* @param password ?????* ???????????密码 ?????* @param keyStorePath ?????* ???????????密钥库路径 ?????* @param trustStorePath ?????* ???????????信任库路径 ?????* @return SSLSocketFactory ?????* @throws Exception ?????*/ ?????public static SSLContext getSSLContext(String password, ?????????????String keyStorePath, String trustStorePath) throws Exception { ?????????// 实例化密钥库 ?????????KeyManagerFactory keyManagerFactory = KeyManagerFactory ?????????????????.getInstance(KeyManagerFactory.getDefaultAlgorithm()); ?????????// 获得密钥库 ?????????KeyStore keyStore = getKeyStore(password, keyStorePath); ?????????// 初始化密钥工厂 ?????????keyManagerFactory.init(keyStore, password.toCharArray()); ???????????// 实例化信任库 ?????????TrustManagerFactory trustManagerFactory = TrustManagerFactory ?????????????????.getInstance(TrustManagerFactory.getDefaultAlgorithm()); ?????????// 获得信任库 ?????????KeyStore trustStore = getKeyStore(password, trustStorePath); ?????????// 初始化信任库 ?????????trustManagerFactory.init(trustStore); ?????????// 实例化SSL上下文 ?????????SSLContext ctx = SSLContext.getInstance("TLS"); ?????????// 初始化SSL上下文 ?????????ctx.init(keyManagerFactory.getKeyManagers(), ?????????????????trustManagerFactory.getTrustManagers(), null); ?????????// 获得SSLSocketFactory ?????????return ctx; ?????} ???????/** ?????* 初始化HttpsURLConnection. ?????* @param password ?????* ???????????密码 ?????* @param keyStorePath ?????* ???????????密钥库路径 ?????* @param trustStorePath ?????* ???????????信任库路径 ?????* @throws Exception ?????*/ ?????public static void initHttpsURLConnection(String password, ?????????????String keyStorePath, String trustStorePath) throws Exception { ?????????// 声明SSL上下文 ?????????SSLContext sslContext = null; ?????????// 实例化主机名验证接口 ?????????HostnameVerifierUtil hnv = new HostnameVerifierUtil(); ?????????try { ?????????????sslContext = getSSLContext(password, keyStorePath, trustStorePath); ?????????} catch (GeneralSecurityException e) { ?????????????e.printStackTrace(); ?????????} ?????????if (sslContext != null) { ?????????????HttpsURLConnection.setDefaultSSLSocketFactory(sslContext ?????????????????????.getSocketFactory()); ?????????} ?????????HttpsURLConnection.setDefaultHostnameVerifier(hnv); ?????} ???????/** ?????* 发送请求. ?????* @param httpsUrl ?????* ???????????请求的地址 ?????* @param xmlStr ?????* ???????????请求的数据 ?????*/ ?????public static ResultVo post(String httpsUrl, String xmlStr) { ?????????HttpsURLConnection urlCon = null; ?????????try { ?????????????urlCon = (HttpsURLConnection) (new URL(httpsUrl)).openConnection(); ?????????????urlCon.setDoInput(true); ?????????????urlCon.setDoOutput(true); ?????????????urlCon.setRequestMethod("POST"); ?????????????urlCon.setRequestProperty("Content-Length", ?????????????????????String.valueOf(xmlStr.getBytes().length)); ?????????????urlCon.setUseCaches(false); ?????????????????????????urlCon.getOutputStream().write(xmlStr.getBytes("UTF-8")); ?????????????urlCon.getOutputStream().flush(); ?????????????urlCon.getOutputStream().close(); ?????????????BufferedReader in = new BufferedReader(new InputStreamReader( ?????????????????????urlCon.getInputStream())); ?????????????String line; ????????????StringBuffer resultStr = new StringBuffer(); ???????????while ((line = in.readLine()) != null) { ?????????????resultStr.append(line); ?????????????} ?????????????System.out.println(resultStr.toString()); ???????????ResultVo resultVo = JSON.parseObject(resultStr.toString(), ResultVo.class); ???????????return resultVo; ???????} catch (MalformedURLException e) { ?????????????e.printStackTrace(); ?????????} catch (IOException e) { ?????????????e.printStackTrace(); ?????????} catch (Exception e) { ?????????????e.printStackTrace(); ?????????}return null; ?????} ???????/** ?????* 测试方法. ?????* @param args ?????* @throws Exception ?????*/ ?????public static void main(String[] args) throws Exception { ??????// 密码 ?????????String password = ""; ?????????// 密钥库 ?????????String keyStorePath = ""; ?????????// 信任库 ?????????String trustStorePath = ""; ?????????// 本地起的https服务 ?????????String httpsUrl = ""; ?????????// 传输文本 ?????????String xmlStr = ""; ?????????HttpsPost.initHttpsURLConnection(password, keyStorePath, trustStorePath); ?????????// 发起请求 ?????????HttpsPost.post(httpsUrl, xmlStr); ?????} ?}
jar 包 fastjson-1.1.27.jar 、log4j-1.2.11.jar
链接:https://pan.baidu.com/s/1UAGUmc7PhUT0Db65YuQMiA
提取码:s70w
带jsk证书,请求https接口
原文地址:https://www.cnblogs.com/remember-forget/p/9945628.html