有个项目,对方写的接口比较奇葩,要求必须以Raw的方式传参,直接上代码吧。


1 /**  2      * 以raw形式发送post请求  3      *  4      * @param url    访问地址  5      * @param param  需要传输json参数(可以通过json工具转换成String)  6      * @param header header 参数  7      * @return 返回网页返回的数据  8      */  9     public static String doPostRaw(String url, String param, Map<String, String> header) { 10  11         OutputStreamWriter out; 12         BufferedReader in; 13         StringBuilder result = new StringBuilder(); 14  15         try { 16             URL realUrl = new URL(url); 17  18             // 打开和URL之间的连接 19             HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection(); 20  21             // 设置超时时间 22             conn.setConnectTimeout(5000); 23             conn.setReadTimeout(15000); 24  25             // 设置通用的请求属性 26             conn.setRequestMethod("POST"); 27             conn.addRequestProperty("Content-Type", "application/json"); 28             conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); 29             conn.setRequestProperty("Accept", "*/*"); 30             conn.setRequestProperty("Accept-Encoding", "gzip,deflate,br"); 31             conn.setRequestProperty("Connection", "Keep-Alive"); 32  33             // 如有特殊属性 34             if (header != null) { 35                 for (Map.Entry<String, String> entry : header.entrySet()) { 36                     conn.setRequestProperty(entry.getKey(), entry.getValue()); 37                 } 38             } 39  40             // 发送POST请求必须设置如下两行 41             conn.setDoOutput(true); 42             conn.setDoInput(true); 43  44             // 获取URLConnection对象对应的输出流 45             out = new OutputStreamWriter(conn.getOutputStream(), StandardCharsets.UTF_8);// utf-8编码 46  47             // 发送请求参数 48             out.write(param); 49  50             // flush输出流的缓冲 51             out.flush(); 52  53             // 定义BufferedReader输入流来读取URL的响应 54             in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); 55  56             String line; 57             while ((line = in.readLine()) != null) { 58                 result.append(line); 59             } 60  61             out.close(); 62             in.close(); 63             conn.disconnect(); 64  65         } catch (Exception e) { 66             e.printStackTrace(); 67         } 68  69         return result.toString(); 70     }



参数说明:

header头参数,如果有特殊头参数可以定制,如果没有传null就可以了。