java如何发起https的get请求,post请求和put请求

2025-10-05 13:31:13

1、首先创建MyHttps的工具类

java如何发起https的get请求,post请求和put请求

2、然后引入一个通用的证书管理器类,进行https请求的时候要用到

import java.security.cert.CertificateException;  import java.security.cert.X509Certificate;  import javax.net.ssl.X509TrustManager;    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        }        @Override      public X509Certificate[] getAcceptedIssuers() {          // TODO Auto-generated method stub          return null;      }    }  

java如何发起https的get请求,post请求和put请求

3、首先写入https的get请求,参数为请求地址和请求头键值对,返回值为响应头键值对与String类型的返回内容组成的Object数组

/**     * 发起Https的get请求     * @param property 请求头参数     * @url 请求的地址     * @return 响应内容[Map<String, List<String>>(响应头),String(响应体)]     */    public static Object[] get(String url,LinkedHashMap<String, String> property) {        Map<String, List<String>> headerFields = null;        StringBuffer buffer=null;          try{          //创建SSLContext          SSLContext sslContext=SSLContext.getInstance("TLS");          TrustManager[] tm={new MyX509TrustManager()};          //初始化          sslContext.init(null, tm, new java.security.SecureRandom());;          //获取SSLSocketFactory对象          SSLSocketFactory ssf=sslContext.getSocketFactory();          URL u=new URL(url);          HttpsURLConnection conn=(HttpsURLConnection)u.openConnection();                  Set<String> keySet = property.keySet();        for (String key : keySet) {             conn.setRequestProperty(key, property.get(key));        }        //设置当前实例使用的SSLSoctetFactory          System.out.println("开始链接");        conn.setSSLSocketFactory(ssf);          conn.connect();          System.out.println("链接成功");                //读取服务器返回的响应头        headerFields = conn.getHeaderFields();            //读取服务器端返回的内容          InputStream is=conn.getInputStream();          InputStreamReader isr=new InputStreamReader(is,"utf-8");          BufferedReader br=new BufferedReader(isr);          buffer=new StringBuffer();          String line=null;          while((line=br.readLine())!=null){              buffer.append(line);          }          }catch(Exception e){              e.printStackTrace();          }        Object[] response = {headerFields, buffer.toString()};                return response;    }

java如何发起https的get请求,post请求和put请求

4、以及post请求,其实就是在https的get请求的基础上加上post请求的内容,这个http的get和post请求的区别是一样的

/**     * 发情https的post请求     * @param url 目标地址     * @param property 请求头参数     * @param content 请求内容     * @return 响应内容[Map<String, List<String>>(响应头),String(响应体)]     */    public static Object[] post(String url,LinkedHashMap<String, String> property,String content) {        StringBuffer buffer=null;          Map<String, List<String>> headerFields = null;        try{          //创建SSLContext          SSLContext sslContext=SSLContext.getInstance("TLS");          TrustManager[] tm={new MyX509TrustManager()};          //初始化          sslContext.init(null, tm, new java.security.SecureRandom());;          //获取SSLSocketFactory对象          SSLSocketFactory ssf=sslContext.getSocketFactory();          URL u=new URL(url);          HttpsURLConnection conn=(HttpsURLConnection)u.openConnection();          conn.setDoOutput(true);          conn.setDoInput(true);          conn.setUseCaches(false);          conn.setRequestMethod("POST");         Set<String> keySet = property.keySet();        for (String key : keySet) {             conn.setRequestProperty(key, property.get(key));        }        //设置当前实例使用的SSLSoctetFactory          System.out.println("开始链接");        conn.setSSLSocketFactory(ssf);          conn.connect();          DataOutputStream os = new DataOutputStream( conn.getOutputStream() );        os.writeBytes(content);        os.flush();        os.close();        System.out.println("链接成功");        //读取服务器返回的响应头        headerFields  = conn.getHeaderFields();        //读取服务器端返回的内容          InputStream is=conn.getInputStream();          InputStreamReader isr=new InputStreamReader(is,"utf-8");          BufferedReader br=new BufferedReader(isr);          buffer=new StringBuffer();          String line=null;          while((line=br.readLine())!=null){              buffer.append(line);          }          }catch(Exception e){              e.printStackTrace();          }        Object[] response = {headerFields, buffer.toString()};        return response;    }

java如何发起https的get请求,post请求和put请求

5、另外还有一个put请求以及一个get的img下载请求不再贴出,可以再第六步的全部代码中看到,这里我讲一下https请求和http请求差异的地方,https请求,要先创建ssl套接字安全层,然后将这个安全层套在连接上,之后再进行网络连接请求

java如何发起https的get请求,post请求和put请求

6、最后贴一下这个https工具栏的完整的代码:

import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URL;import java.security.KeyManagementException;import java.security.NoSuchAlgorithmException;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSocketFactory;import javax.net.ssl.TrustManager;import tool.MyX509TrustManager;/** * 进行Https请求 * @author 枫 * */public class MyHttps {        /**     * 发起Https的get请求     * @param property 请求头参数     * @url 请求的地址     * @return 响应内容[Map<String, List<String>>(响应头),String(响应体)]     */    public static Object[] get(String url,LinkedHashMap<String, String> property) {        Map<String, List<String>> headerFields = null;        StringBuffer buffer=null;          try{          //创建SSLContext          SSLContext sslContext=SSLContext.getInstance("TLS");          TrustManager[] tm={new MyX509TrustManager()};          //初始化          sslContext.init(null, tm, new java.security.SecureRandom());;          //获取SSLSocketFactory对象          SSLSocketFactory ssf=sslContext.getSocketFactory();          URL u=new URL(url);          HttpsURLConnection conn=(HttpsURLConnection)u.openConnection();                  Set<String> keySet = property.keySet();        for (String key : keySet) {             conn.setRequestProperty(key, property.get(key));        }        //设置当前实例使用的SSLSoctetFactory          System.out.println("开始链接");        conn.setSSLSocketFactory(ssf);          conn.connect();          System.out.println("链接成功");                //读取服务器返回的响应头        headerFields = conn.getHeaderFields();            //读取服务器端返回的内容          InputStream is=conn.getInputStream();          InputStreamReader isr=new InputStreamReader(is,"utf-8");          BufferedReader br=new BufferedReader(isr);          buffer=new StringBuffer();          String line=null;          while((line=br.readLine())!=null){              buffer.append(line);          }          }catch(Exception e){              e.printStackTrace();          }        Object[] response = {headerFields, buffer.toString()};                return response;    }        /**     * 发起Https的get请求     * @param property 请求头参数     * @param path      * @return      * @url 请求的地址     * @return 响应内容[Map<String, List<String>>(响应头),String(响应体)]     */    public static boolean getImg(String url,LinkedHashMap<String, String> property, String path) {        InputStream is = null;        try {        Map<String, List<String>> headerFields = null;        StringBuffer buffer=null;          //创建SSLContext          SSLContext sslContext=SSLContext.getInstance("TLS");          TrustManager[] tm={new MyX509TrustManager()};          //初始化          sslContext.init(null, tm, new java.security.SecureRandom());;          //获取SSLSocketFactory对象          SSLSocketFactory ssf=sslContext.getSocketFactory();          URL u=new URL(url);          HttpsURLConnection conn=(HttpsURLConnection)u.openConnection();                  Set<String> keySet = property.keySet();        for (String key : keySet) {             conn.setRequestProperty(key, property.get(key));        }        //设置当前实例使用的SSLSoctetFactory          System.out.println("开始链接");        conn.setSSLSocketFactory(ssf);              conn.connect();        System.out.println("链接成功");                //读取服务器返回的响应头        headerFields = conn.getHeaderFields();            //读取服务器端返回的内容              is = conn.getInputStream();        } catch (IOException e) {            e.printStackTrace();        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        } catch (KeyManagementException e) {            e.printStackTrace();        }          try {            FileOutputStream out = new FileOutputStream(new File(path));            //文件缓存区         byte[] buffer = new byte[10240000];                int len = 0;                while( (len=is.read(buffer)) != -1 ){                    out.write(buffer, 0, len);                }                out.flush();            out.close();        } catch (IOException e) {            e.printStackTrace();        }        return true;    }        /**     * 发情https的post请求     * @param url 目标地址     * @param property 请求头参数     * @param content 请求内容     * @return 响应内容[Map<String, List<String>>(响应头),String(响应体)]     */    public static Object[] post(String url,LinkedHashMap<String, String> property,String content) {        StringBuffer buffer=null;          Map<String, List<String>> headerFields = null;        try{          //创建SSLContext          SSLContext sslContext=SSLContext.getInstance("TLS");          TrustManager[] tm={new MyX509TrustManager()};          //初始化          sslContext.init(null, tm, new java.security.SecureRandom());;          //获取SSLSocketFactory对象          SSLSocketFactory ssf=sslContext.getSocketFactory();          URL u=new URL(url);          HttpsURLConnection conn=(HttpsURLConnection)u.openConnection();          conn.setDoOutput(true);          conn.setDoInput(true);          conn.setUseCaches(false);          conn.setRequestMethod("POST");         Set<String> keySet = property.keySet();        for (String key : keySet) {             conn.setRequestProperty(key, property.get(key));        }        //设置当前实例使用的SSLSoctetFactory          System.out.println("开始链接");        conn.setSSLSocketFactory(ssf);          conn.connect();          DataOutputStream os = new DataOutputStream( conn.getOutputStream() );        os.writeBytes(content);        os.flush();        os.close();        System.out.println("链接成功");        //读取服务器返回的响应头        headerFields  = conn.getHeaderFields();        //读取服务器端返回的内容          InputStream is=conn.getInputStream();          InputStreamReader isr=new InputStreamReader(is,"utf-8");          BufferedReader br=new BufferedReader(isr);          buffer=new StringBuffer();          String line=null;          while((line=br.readLine())!=null){              buffer.append(line);          }          }catch(Exception e){              e.printStackTrace();          }        Object[] response = {headerFields, buffer.toString()};        return response;    }        /**     * 发情https的put请求     * @param url 目标地址     * @param property 请求头参数     * @param content 请求内容     * @return 响应内容[Map<String, List<String>>(响应头),String(响应体)]     */    public static Object[] put(String url,LinkedHashMap<String, String> property,String content) {        StringBuffer buffer=null;          Map<String, List<String>> headerFields = null;        try{          //创建SSLContext          SSLContext sslContext=SSLContext.getInstance("TLS");          TrustManager[] tm={new MyX509TrustManager()};          //初始化          sslContext.init(null, tm, new java.security.SecureRandom());;          //获取SSLSocketFactory对象          SSLSocketFactory ssf=sslContext.getSocketFactory();          URL u=new URL(url);          HttpsURLConnection conn=(HttpsURLConnection)u.openConnection();          conn.setDoOutput(true);          conn.setDoInput(true);          conn.setUseCaches(false);          conn.setRequestMethod("PUT");         Set<String> keySet = property.keySet();        for (String key : keySet) {             conn.setRequestProperty(key, property.get(key));        }        //设置当前实例使用的SSLSoctetFactory          System.out.println("开始链接");        conn.setSSLSocketFactory(ssf);          conn.connect();          DataOutputStream os = new DataOutputStream( conn.getOutputStream() );        os.writeBytes(content);        os.flush();        os.close();        System.out.println("链接成功");        //读取服务器返回的响应头        headerFields  = conn.getHeaderFields();        //读取服务器端返回的内容          InputStream is=conn.getInputStream();          InputStreamReader isr=new InputStreamReader(is,"utf-8");          BufferedReader br=new BufferedReader(isr);          buffer=new StringBuffer();          String line=null;          while((line=br.readLine())!=null){              buffer.append(line);          }          }catch(Exception e){              e.printStackTrace();          }        Object[] response = {headerFields, buffer.toString()};        return response;    }}

java如何发起https的get请求,post请求和put请求

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢