public static String post(String actionUrl, Map<String, String> params,Map<String, File> files) throws IOException {String BOUNDARY = java.util.UUID.randomUUID().toString();String PREFIX = "--", 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(5 * 1000);conn.setDoInput(true);// 允许输入conn.setDoOutput(true);// 允许输出conn.setUseCaches(false);conn.setRequestMethod("POST"); // Post方式conn.setRequestProperty("connection", "keep-alive");conn.setRequestProperty("Charsert", "UTF-8");conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA+ ";boundary=" + BOUNDARY);// 首先组拼文本类型的参数StringBuilder sb = new StringBuilder();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());outStream.write(sb.toString().getBytes());// 发送文件数据if (files != null)for (Map.Entry<String, File> file : files.entrySet()) {StringBuilder sb1 = new StringBuilder();sb1.append(PREFIX);sb1.append(BOUNDARY);sb1.append(LINEND);sb1.append("Content-Disposition: form-data; name=\"file\"; filename=\""+ file.getKey() + "\"" + LINEND);sb1.append("Content-Type: application/octet-stream; charset="+ CHARSET + LINEND);sb1.append(LINEND);outStream.write(sb1.toString().getBytes());InputStream is = new FileInputStream(file.getValue());byte[] buffer = new byte[1024];int len = 0;while ((len = is.read(buffer)) != -1) {outStream.write(buffer, 0, len);}is.close();outStream.write(LINEND.getBytes());}// 请求结束标志byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();outStream.write(end_data);outStream.flush();// 得到响应码int res = conn.getResponseCode();InputStream in = conn.getInputStream();InputStreamReader isReader = new InputStreamReader(in);BufferedReader bufReader = new BufferedReader(isReader);String line = null;String data = "OK";while ((line = bufReader.readLine()) == null)data += line;if (res == 200) {int ch;StringBuilder sb2 = new StringBuilder();while ((ch = in.read()) != -1) {sb2.append((char) ch);}}outStream.close();conn.disconnect();return in.toString();}

更多相关文章

  1. Android TextView Justify Text TextView自适应文本
  2. android 的文本框输入类型
  3. android文本限制输入行数,多余部分显示省略号
  4. Android文本输入框EditText属性和方法说明
  5. android 输出.txt 文本换行问题
  6. Android 自定义文本框(带图片)
  7. 捕获Android文本输入框的软键盘完成(Done)按键消息
  8. Android下载网络文本
  9. Android实现TextView部分文本监听单击事件

随机推荐

  1. Android在诸如editText等组件设置输入法
  2. Android沉浸式状态栏变色
  3. Android(安卓)只开启一个Activity实例
  4. android微信纯图片分享和网页分享
  5. android ListView+CheckBox实现单选
  6. 提高Android(安卓)Studio的gradle编译速
  7. Android开发常用透明度alpha百分比转16进
  8. Android2.1读取进程流量
  9. Android(安卓)中LayoutInflater的使用
  10. Android(安卓)Room 框架学习