• http请求方式HttpURLConnection


    http请求方式-HttpURLConnection

    import com.alibaba.fastjson.JSON;
    import com.example.core.mydemo.http.OrderReqVO;
    import org.springframework.lang.Nullable;
    
    import javax.net.ssl.*;
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.security.SecureRandom;
    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;
    
    public class HttpURLConnectionUtil {
        /*
         * Http get请求
         * @param httpUrl 连接
         * @return 响应数据
         */
        public static String doGet(String httpUrl){
            //链接
            HttpURLConnection connection = null;
            InputStream is = null;
            BufferedReader br = null;
            StringBuffer result = new StringBuffer();
            try {
                //创建连接
                URL url = new URL(httpUrl);
                connection = (HttpURLConnection) url.openConnection();
                //设置请求方式
                connection.setRequestMethod("GET");
                //设置连接超时时间
                connection.setReadTimeout(15000);
                //开始连接
                connection.connect();
                //获取响应数据
                if (connection.getResponseCode() == 200) {
                    //获取返回的数据
                    is = connection.getInputStream();
                    if (null != is) {
                        br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                        String temp = null;
                        while (null != (temp = br.readLine())) {
                            result.append(temp);
                        }
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (null != br) {
                    try {
                        br.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (null != is) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                //关闭远程连接
                connection.disconnect();
            }
            return result.toString();
        }
    
        /**
         * Http post请求
         * @param httpUrl 连接
         * @param param 参数
         * @return
         */
        public static String doPost(String httpUrl, @Nullable String param) throws Exception{
            StringBuffer result = new StringBuffer();
            //连接
            HttpURLConnection connection = null;
            OutputStream os = null;
            InputStream is = null;
            BufferedReader br = null;
            try {
                //创建连接对象
                URL url = new URL(httpUrl);
                //创建连接
    //            connection = (HttpURLConnection) url.openConnection();
                if(httpUrl.startsWith("https")){
                    trustHttps();
                    connection = (HttpsURLConnection) url.openConnection();
                }else{
                    connection = (HttpURLConnection) url.openConnection();
                }
                //设置请求方法
                connection.setRequestMethod("POST");
                //设置连接超时时间
                connection.setConnectTimeout(15000);
                //设置读取超时时间
                connection.setReadTimeout(15000);
                //DoOutput设置是否向httpUrlConnection输出,DoInput设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个
                //设置是否可读取
                connection.setDoOutput(true);
                connection.setDoInput(true);
                //设置通用的请求属性
                connection.setRequestProperty("accept", "*/*");
                connection.setRequestProperty("connection", "Keep-Alive");
                connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
                connection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
    
                //拼装参数
                if (null != param && !param.equals("")) {
                    //设置参数
                    os = connection.getOutputStream();
                    //拼装参数
                    os.write(param.getBytes("UTF-8"));
                }
                //设置权限
                //设置请求头等
                //开启连接
                //connection.connect();
                //读取响应
                if (connection.getResponseCode() == 200) {
                    is = connection.getInputStream();
                    if (null != is) {
                        br = new BufferedReader(new InputStreamReader(is, "GBK"));
                        String temp = null;
                        while (null != (temp = br.readLine())) {
                            result.append(temp);
                            result.append("\r\n");
                        }
                    }
                }
    
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                //关闭连接
                if(br!=null){
                    try {
                        br.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(os!=null){
                    try {
                        os.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(is!=null){
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                //关闭连接
                connection.disconnect();
            }
            return result.toString();
        }
    
    
        private static void trustHttps() throws Exception{
            //第一个参数为协议,第二个参数为提供者(可以缺省)
            SSLContext sslcontext = SSLContext.getInstance("SSL", "SunJSSE");
            TrustManager[] tm = {new MyX509TrustManager()};
            sslcontext.init(null, tm, new SecureRandom());
            HostnameVerifier ignoreHostnameVerifier = new HostnameVerifier() {
                @Override
                public boolean verify(String s, SSLSession sslsession) {
                    return true;
                }
            };
            HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);
            HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory());
        }
    
        public static class MyX509TrustManager implements X509TrustManager {
            @Override
            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
    
            }
    
            @Override
            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
    
            }
    
            @Override
            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }
    
        }
    
        public static void main(String[] args) {
            OrderReqVO data = new OrderReqVO();
            data.setOrderNum("111123333");
            data.setServerType("1");
    
    
            String url = "https://域名/接口名称";
    
            String message = null;
            try {
                message = doPost(url, JSON.toJSONString(data));
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println("message = " + message);
        }
    
    }
  • 相关阅读:
    Arbitrage
    Big Event in HDU
    敌兵布阵
    Eddy's picture
    A Walk Through the Forest 最短路径+深搜
    Holding Bin-Laden Captive! 母函数
    Moving Tables 贪心
    Fire Net
    Number Sequence
    Find your present! map
  • 原文地址:https://www.cnblogs.com/oktokeep/p/16789352.html
Copyright © 2020-2023  润新知