zoukankan      html  css  js  c++  java
  • 以Raw的方式发送POST请求

    有个项目,对方写的接口比较奇葩,要求必须以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就可以了。

    欢迎关注我的公众号:云栖语,不一样的研发视界。
    云栖语微信公众号:change-1978
  • 相关阅读:
    iOS nsstring 截取字符前后字符串
    iOS 计算时间差
    Android的ProgressBar
    Android:OptionMenu
    eclipse the user operation is waiting for building workspace" to complete
    Android存储之SQLiteDatbase
    Android保存之SharedPreferences
    pkg_utility
    Oracle同义词 synonyms
    xzzx
  • 原文地址:https://www.cnblogs.com/hunttown/p/15111109.html
Copyright © 2011-2022 走看看