加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java之Https请求

发布时间:2020-12-15 07:15:38 所属栏目:Java 来源:网络整理
导读:import java.io.BufferedReader; java.io.InputStream; java.io.InputStreamReader; java.io.OutputStream; java.net.URL; java.security.cert.CertificateException; java.security.cert.X509Certificate; javax.net.ssl.HttpsURLConnection; javax.net.ssl
import java.io.BufferedReader;
 java.io.InputStream;
 java.io.InputStreamReader;
 java.io.OutputStream;
 java.net.URL;
 java.security.cert.CertificateException;
 java.security.cert.X509Certificate;

 javax.net.ssl.HttpsURLConnection;
 javax.net.ssl.SSLContext;
 javax.net.ssl.SSLSocketFactory;
 javax.net.ssl.TrustManager;
 javax.net.ssl.X509TrustManager;

public class testHttps implements X509TrustManager  {

    void checkClientTrusted(X509Certificate[] arg0,String arg1) throws CertificateException {
        // TODO Auto-generated method stub
        
    }

    void checkServerTrusted(X509Certificate[] arg0,1)">public X509Certificate[] getAcceptedIssuers() {
         TODO Auto-generated method stub
        return null;
    }
    
    static String httpsRequest(String requestUrl,String requestMethod,String outputStr){  
        StringBuffer buffer=;  
        try{  
        创建SSLContext  
        SSLContext sslContext=SSLContext.getInstance("SSL");  
        TrustManager[] tm={new testHttps()};  
        初始化  
        sslContext.init(null,tm, java.security.SecureRandom());;  
        获取SSLSocketFactory对象  
        SSLSocketFactory ssf=sslContext.getSocketFactory();  
        URL url= URL(requestUrl);  
        HttpsURLConnection conn=(HttpsURLConnection)url.openConnection();  
        conn.setDoOutput(true);  
        conn.setDoInput();  
        conn.setUseCaches(false);  
        conn.setRequestMethod(requestMethod);  
        设置当前实例使用的SSLSoctetFactory  
        conn.setSSLSocketFactory(ssf);  
        conn.connect();  
        往服务器端写内容  
        if(null!=outputStr){  
            OutputStream os=conn.getOutputStream();  
            os.write(outputStr.getBytes("utf-8"));  
            os.close();  
        }  
          
        读取服务器端返回的内容  
        InputStream is=conn.getInputStream();  
        InputStreamReader isr=new InputStreamReader(is,"utf-8");  
        BufferedReader br= BufferedReader(isr);  
        buffer= StringBuffer();  
        String line=while((line=br.readLine())!=){  
            buffer.append(line);  
        }  
        }catch(Exception e){  
            e.printStackTrace();  
        }  
        return buffer.toString();  
    }  

    
    static void main(String[] args) {
        String s=httpsRequest("https://www.baidu.com","GET",1)">);  
        System.out.println(s);  
    }
}

上述代码运行main方法后,直接返回百度的html界面

也就是大家常见的如下界面:

?

关于https请求,以及它和http请求的区别等,可以参考百度百科:https://baike.baidu.com/item/https/285356?fr=aladdin

至于如何https请求不再多说,秘密都在javax.net.ssl这个包及其包下对应的类。

Java同很多例如Ruby,Python等高级语言一样,很多底层的东西基本都是封装好的。作为开发者熟知api,根据业务的需要,导入对应的包,调用对应的方法完成需求。

当然,作为初级程序员而言知道哪些api比较常用,完成工作任务或者学习任务即可,但是作为中级程序员而言,不仅仅要知道api,而且要熟悉理解它的实现原理,当然也要知道在那些情况使用它们,以及它们在项目中是如何运行的,会出现什么问题,作为中级程序员必须要知道,当然,如果作为初级程序员而言,对于原理可以放在一边,当然,能理解是最好。

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读