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(); }
阅读全文
0 0
- java post方式传递数据的两种方式(http https)
- Http post方式传递参数的格式
- java 传递参数的两种方式
- java 传递参数的两种方式
- java 传递参数的两种方式
- http post 方法传递参数的2种方式
- JAVA设置代理的两种方式(HTTPS和HTTP)
- 两种HTTP连接方式POST&GET的比较
- 两种HTTP连接方式POST&GET的比较
- 两种HTTP连接方式POST&GET的比较
- java发送http的两种请求方式——get、post
- 基于java 使用http-post方式请求https webservice接口
- Intent数据传递两种常见方式
- HTTP Post 常见的四种提交数据的方式
- extjs获取和传递数据的两种方式
- Activity和Fragment传递数据的两种方式
- Activity和Fragment传递数据的两种方式
- 【javaWeb】前后端传递数据交互的两种方式
- 搭建elk
- POJ
- fork()详解
- JWT
- 自定义ListView下拉、上滑、左拉
- java post方式传递数据的两种方式(http https)
- window.history的跳转实质-HTML5 history API 解析
- vue通信
- tensorflow tf.transpose()
- 推荐系统中的冷启动和探索利用问题探讨 (下)
- 年轻人,你对io一无所知
- linux设备驱动学习总结-keyPoints
- 数据结构基础 综述
- 一张图让你看懂各开源License