微信公众平台开发3-Https请求的封装

转载请注明:http://blog.csdn.net/ly20116/article/details/51082999

根据开发文档,微信公众平台开发接口的调用都需要使用https协议。
因此我们需要封装一个通用的https请求方法。
该方法必须具备以下特点:
1、使用https协议
2、支持GET、POST请求方式
3、支持有参数提交和无参数提交

步骤:
1、实现证书信任管理器类 MyX509TrustManager,继承至X509TrustManager接口

/**
 * 证书信任管理类
 * @author 洋
 *
 */
public class MyX509TrustManager implements X509TrustManager{

    /**
     * 检查客户端的证书,若不信任该证书则抛出异常
     */
    @Override
    public void checkClientTrusted(X509Certificate[] chain, String authType)
            throws CertificateException {
        // TODO Auto-generated method stub

    }

    /**
     * 检查服务器的证书,若不信任该证书同样抛出异常,如果是空函数体,则信任所有证书
     */
    @Override
    public void checkServerTrusted(X509Certificate[] chain, String authType)
            throws CertificateException {
        // TODO Auto-generated method stub

    }

    /**
     * 返回受信任的X509证书数组。
     */
    @Override
    public X509Certificate[] getAcceptedIssuers() {
        // TODO Auto-generated method stub
        return null;
    }

}

2、实现https请求方法

这里写图片描述
部分JSSE类关系图

/**
 * https工具类
 * @author 洋
 *
 */
public class HttpsUtil {
/**
     * 发送Https请求并获取结果
     * @param requestUrl
     * @param method
     * @param data
     * @return
     */
    public static JSONObject httpsRequest(String requestUrl,String method,String data){
        JSONObject jsonObject=null;
        StringBuffer sb=new StringBuffer();

        try {
        //创建SSLContext对象,并使用我们指定的信任管理器初始化
        TrustManager[] tm={new MyX509TrustManager()};
        SSLContext sslContext= SSLContext.getInstance("SSL", "SunJSSE");
        sslContext.init(null, tm, new SecureRandom());

        //获取SSLSocketFactory对象
        SSLSocketFactory ssf=sslContext.getSocketFactory();

        //创建HttpsURLConnection对象,并设置其SSLSocketFactory对象
        URL url=new URL(requestUrl);
        HttpsURLConnection conn=(HttpsURLConnection) url.openConnection();
        conn.setSSLSocketFactory(ssf);

        //设置连接参数
        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.setUseCaches(false);
        conn.setRequestMethod(method);//设置请求方式

        if(method.equals("GET")){
            conn.connect();
        }
        if(data!=null){
            OutputStream os=conn.getOutputStream();
            os.write(data.getBytes("utf-8"));
            os.close();
        }

        InputStream is=conn.getInputStream();
        InputStreamReader isr=new InputStreamReader(is,"utf-8");
        BufferedReader br=new BufferedReader(isr);

        String str=null;
        while((str=br.readLine())!=null){
            sb.append(str);
        }
        //清理
        br.close();
        isr.close();
        is.close();
        is=null;
        conn.disconnect();
        //转化为JSON对象
        jsonObject=JSONObject.fromObject(sb.toString());

        } catch (ConnectException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return jsonObject;

    }
}

由于需要转换为JSONObject对象,且整个工程中也需要解析和生成JSON数据,所以需要到开源的jar包,本文导入的是json_lib工具包,也可以下载其他的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值