java post方式传递数据的两种方式(http https)
2017-08-22 16:53
288 查看
采用哪种方式传递数据,主要取决于目标地址是否有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(); }
相关文章推荐
- Java 通过httpClient Post方式提交xml,并从服务端返回数据
- JAVA HttpURLConnection Post方式提交传递参数
- Java 通过HttpURLConnection Post方式提交json,并从服务端返回json数据
- Java 通过HttpURLConnection Post方式提交json,并从服务端返回json数据
- Java基础知识强化之网络编程笔记17:Android网络通信之 使用Http的Post方式读取网络数据(基于HTTP通信技术)
- java Http消息传递之POST和GET两种方法--通过实用工具类来获取服务器资源
- java发送http的两种请求方式——get、post
- C#使用Http Post方式传递Json数据字符串调用Web Service
- 【javaWeb】前后端传递数据交互的两种方式
- 程序使用 HTTP 协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和 POST 两种方式来完成
- Java HttpClient两种数据传输方式
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service
- 基于java 使用http-post方式请求https webservice接口
- Java 通过HttpURLConnection Post方式提交xml,并从服务端返回数据
- java Http消息传递之POST和GET两种方法
- java使用http get以及post方式读取网络数据
- Java 通过HttpURLConnection Post方式提交json,并从服务端返回json数据
- HttpClient 使用 java -- POST方式带参提交数据
- HttpUrlConnection两种请求数据的方式get和post提交数据
- Java基础知识强化之网络编程笔记18:Android网络通信之 使用HttpClient的Post / Get 方式读取网络数据(基于HTTP通信技术)