java POST请求body传参

来源:互联网 发布:filezilla是什么软件 编辑:程序博客网 时间:2024/05/21 11:14
public String post(String actionUrl, Map<String, String> params) throws IOException {        String BOUNDARY = java.util.UUID.randomUUID().toString();        String PREFIX = "--";        String LINEND = "\r\n";        String MULTIPART_FROM_DATA = "multipart/form-data";        String CHARSET = "UTF-8";        URL uri = new URL(actionUrl);        HttpURLConnection conn = (HttpURLConnection) uri.openConnection();        conn.setReadTimeout(30 * 1000); // 缓存的最长时间        conn.setDoInput(true);// 允许输入        conn.setDoOutput(true);// 允许输出        conn.setUseCaches(false); // 不允许使用缓存        conn.setRequestMethod("POST");        conn.setRequestProperty("connection", "keep-alive");        conn.setRequestProperty("Charsert", "UTF-8");        conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA + ";boundary=" + BOUNDARY);        StringBuilder sb = new StringBuilder();        if (params!=null) {            // 首先组拼文本类型的参数            for (Map.Entry<String, String> entry : params.entrySet()) {                sb.append(PREFIX);                sb.append(BOUNDARY);                sb.append(LINEND);                sb.append("Content-Disposition: form-data; name=\""                        + entry.getKey() + "\"" + LINEND);                sb.append("Content-Type: text/plain; charset=" + CHARSET + LINEND);                sb.append("Content-Transfer-Encoding: 8bit" + LINEND);                sb.append(LINEND);                sb.append(entry.getValue());                sb.append(LINEND);            }        }        DataOutputStream outStream = new DataOutputStream(                conn.getOutputStream());        if (!TextUtils.isEmpty(sb.toString())) {            outStream.write(sb.toString().getBytes());        }        // 请求结束标志        byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();        outStream.write(end_data);        outStream.flush();        // 得到响应码        int res = conn.getResponseCode();        InputStream in = conn.getInputStream();        if (res == 200) {            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, "UTF-8"));            StringBuffer buffer = new StringBuffer();            String line = "";            while ((line = bufferedReader.readLine()) != null){                buffer.append(line);            }//          int ch;//          StringBuilder sb2 = new StringBuilder();//          while ((ch = in.read()) != -1) {//              sb2.append((char) ch);//          }            return buffer.toString();        }        outStream.close();        conn.disconnect();        return in.toString();    }