java post方式传递数据的两种方式(http https)

来源:互联网 发布:广告文案的100案例知乎 编辑:程序博客网 时间:2024/06/07 14:29
采用哪种方式传递数据,主要取决于目标地址是否有ssl协议。即前缀是http还是https

1.http方式

字段解析:
1.url:表示要传递到的目标地址 String类型
2.byte[] parameter :表示要传递的数据。String.getBytes()可以得到该类型

//重载 http方法。      public static String httpPost (String url, byte[] parameter) {            return httpPost(url, parameter, null);        }    public static String httpPost (String url, byte[] parameter, String base64) {        //定义stringbuffer  方便后面读取网页返回字节流信息时的字符串拼接        StringBuffer buffer = new StringBuffer();        //创建url_connection        java.net.URLConnection http_url_connection = null;        try {            http_url_connection = (new java.net.URL(url)).openConnection();            http_url_connection.setDoInput(true);            http_url_connection.setDoOutput(true);            //http_url_connection.setRequestMethod("POST");            http_url_connection.setRequestProperty("Content-Length", String.valueOf(parameter.length));            http_url_connection.setRequestProperty("Content-Type", "application/json");            http_url_connection.setUseCaches(false);            if (null!=base64) {                //如果传入的参数不为空,则通过base64将传入参数解码                http_url_connection.setRequestProperty("Authorization", "Basic "+new String(java.util.Base64.getEncoder().encode(base64.getBytes("utf-8")), "utf-8"));            }            // write request.            java.io.BufferedOutputStream output_stream = new java.io.BufferedOutputStream(http_url_connection.getOutputStream());            output_stream.write(parameter);            output_stream.flush();            output_stream.close();            output_stream = null;            java.io.InputStreamReader input_stream_reader = new java.io.InputStreamReader(http_url_connection.getInputStream(), "utf-8");            java.io.BufferedReader buffered_reader = new java.io.BufferedReader(input_stream_reader);            buffer = new StringBuffer();            String line;            while ((line = buffered_reader.readLine()) != null) {                buffer.append(line);            }            line=null;            input_stream_reader.close();            input_stream_reader = null;            buffered_reader.close();            buffered_reader = null;        //  http_url_connection.disconnect();        } catch (Exception e) {            e.printStackTrace();        }        return buffer.toString();     }

2.https的方式

字段意思和上面的一样。
其中第三个是”application/json” 即 传递数据的格式。
第四个则表示的是,传递数据的认证方式。一般都是null或者""

 public static String httpsPost (String url, byte[] parameter, String content_type, String base64) {            StringBuffer buffer = new StringBuffer();            // 声明SSL上下文            javax.net.ssl.SSLContext ssl_context = null;            try {                ssl_context = javax.net.ssl.SSLContext.getInstance("SSL");                ssl_context.init(null, new javax.net.ssl.TrustManager[]{                    new javax.net.ssl.X509TrustManager() {                        @Override                        public void checkClientTrusted (java.security.cert.X509Certificate[] chain, String authType) throws java.security.cert.CertificateException {                        }                        @Override                        public void checkServerTrusted (java.security.cert.X509Certificate[] chain, String authType) throws java.security.cert.CertificateException {                        }                        @Override                        public java.security.cert.X509Certificate[] getAcceptedIssuers() {                            return null;                        }                    }                   }, null);            } catch (Exception e) {                e.printStackTrace();            }            javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(ssl_context.getSocketFactory());            // 实例化主机名验证接口            javax.net.ssl.HostnameVerifier hostname_verifier = new javax.net.ssl.HostnameVerifier(){                @Override                public boolean verify(String hostname, javax.net.ssl.SSLSession session) {                    return true;                }            };            javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(hostname_verifier);            javax.net.ssl.HttpsURLConnection http_url_connection = null;            try {//              System.out.println("url"+url);                http_url_connection = (javax.net.ssl.HttpsURLConnection)(new java.net.URL(url)).openConnection();                http_url_connection.setDoInput(true);                http_url_connection.setDoOutput(true);                http_url_connection.setRequestMethod("POST");                http_url_connection.setRequestProperty("Content-Length", String.valueOf(parameter.length));                http_url_connection.setRequestProperty("Content-Type", content_type);                http_url_connection.setUseCaches(false);                if (null!=base64) {                    http_url_connection.setRequestProperty("Authorization", "Basic "+new String(java.util.Base64.getEncoder().encode(base64.getBytes("utf-8")), "utf-8"));                }                // write request.                java.io.BufferedOutputStream output_stream = new java.io.BufferedOutputStream(http_url_connection.getOutputStream());                output_stream.write(parameter);                output_stream.flush();                output_stream.close();                output_stream = null;                java.io.InputStreamReader input_stream_reader = new java.io.InputStreamReader(http_url_connection.getInputStream(), "utf-8");                java.io.BufferedReader buffered_reader = new java.io.BufferedReader(input_stream_reader);                buffer = new StringBuffer();                String line;                while ((line = buffered_reader.readLine()) != null) {                    buffer.append(line);                }                line=null;                input_stream_reader.close();                input_stream_reader = null;                buffered_reader.close();                buffered_reader = null;                http_url_connection.disconnect();            } catch (Exception e) {                  e.printStackTrace();              }            return buffer.toString();        }
原创粉丝点击