java使用简单流方式提交post请求,支持中文解决乱_云起网
您现在的位置是:首页 > 技术文章 > 编程基础 >

java使用简单流方式提交post请求,支持中文解决乱

未知 2021-03-16 22:21
java 使用简单流方式提交post请求,处理字符参数和中文乱码
java 使用流方式提交post请求,使用HttpURLConnection ,参数使用字符串params(后面还贴出使用键值对NamePairValue方式)。
编码在输出流上面设置 :
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
而不是转换字符串的编码,post()的代码如下:

public static String post(String strURL, String params) {
        System.out.println(strURL);
        System.out.println(params);
        BufferedReader reader = null;
        try {
            URL url = new URL(strURL);// 创建连接
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setUseCaches(false);
            connection.setInstanceFollowRedirects(true);
            connection.setRequestMethod("POST"); // 设置请求方式
            // connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
            connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式
            connection.connect();
            //一定要用BufferedReader 来接收响应, 使用字节来接收响应的方法是接收不到内容的
            OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); // utf-8编码
            out.append(params);
            out.flush();
            out.close();
            // 读取响应
            reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
            String line;
            String res = "";
            while ((line = reader.readLine()) != null) {
                res += line;
            }
            reader.close();
            return res;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "请求错误"; // 自定义错误信息
    }
(吃猫的鱼)