java p12证书转jsk_带jsk证书,请求https接口

首先是三个返回的实体类

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 getField(Object model) {

List list = new ArrayList();

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 block

e.printStackTrace();

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InvocationTargetException e) {

// TODO Auto-generated catch block

e.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 {

@Override

public 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值