Java请求Https SSL加密代码

import java.io.*;
import java.net.*;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.*;

import net.sf.json.JSONObject;

public class TrustSSL {
  private static class TrustAnyTrustManager implements X509TrustManager {
  
     public void checkClientTrusted(X509Certificate[] chain, String authType)
       throws CertificateException {
     }
  
     public void checkServerTrusted(X509Certificate[] chain, String authType)
       throws CertificateException {
     }
  
     public X509Certificate[] getAcceptedIssuers() {
      return new X509Certificate[] {};
     }
  }

  private static class TrustAnyHostnameVerifier implements HostnameVerifier {
     public boolean verify(String hostname, SSLSession session) {
      return true;
     }
  }

 

public static void readContentFromPost(String url,String param) throws IOException{
         // Post请求的url,与get不同的是不需要带参数
   //设置SSLContext
   try {
    SSLContext sc = SSLContext.getInstance("SSL");
         sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },
           new java.security.SecureRandom());
          // 打开连接
         URL console = new URL(url);
         HttpsURLConnection connection = (HttpsURLConnection) console
                .openConnection();

          connection.setSSLSocketFactory(sc.getSocketFactory());
          // 设置是否向connection输出,因为这个是post请求,参数要放在
          // http正文内,因此需要设为true
          connection.setDoOutput(true);
          connection.setDoInput(true);
          connection.setRequestMethod("POST");
          // Post 请求不能使用缓存
          connection.setUseCaches(false);
          // URLConnection.setFollowRedirects是static函数,作用于所有的URLConnection对象。
          // URLConnection.setInstanceFollowRedirects是成员函数,仅作用于当前函数
          connection.setInstanceFollowRedirects(true);
          // 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
          // 意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode
          // 进行编码
          connection.setRequestProperty("Content-Type",
                  "application/x-www-form-urlencoded");
          // 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,
          // 要注意的是connection.getOutputStream会隐含的进行connect。
          connection.connect();
          DataOutputStream out = new DataOutputStream(connection
                  .getOutputStream());
          // 正文,正文内容其实跟get的URL中'?'后的参数字符串一致
          out.writeBytes(param);
          out.flush();
          out.close(); // flush and close
          BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));//设置编码,否则中文乱码
          String line="";
          System.out.println("=============================");
          System.out.println("Contents of post request");
          System.out.println("=============================");
          while ((line = reader.readLine()) != null){
              System.out.println(line);
          }
          System.out.println("=============================");
          System.out.println("Contents of post request ends");
          System.out.println("=============================");
          reader.close();
          connection.disconnect();
   } catch (NoSuchAlgorithmException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (KeyManagementException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
     }

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值