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. 菜鸟的安卓实习之路----editText 只允许输入数字,并调出数字键盘
  2. Android(安卓)okHttp上传单张或多张照片
  3. android volley封装及源码解析
  4. Android(安卓)ListView的item点击无响应的解决方法
  5. android 1.6全部的权限介绍
  6. Android(安卓)来电翻转静音实现源码
  7. Android中使用HttpURLConnection和HttpClient实现GET和POST请求
  8. android 向serverGet和Post请求的两种方式,android向server发送
  9. Android(安卓)HTTPS认证之Volley封装

随机推荐

  1. android和java中常见 Exception
  2. Android简明开发教程一:概述
  3. 几个Android云测试
  4. Android(安卓)驱动之旅 (Based on Galaxy
  5. 我是如何自学Android,资料分享(2015 版)
  6. Android(安卓)通过百度地图SDK 实现地图
  7. android ANR产生原因和解决办法
  8. SystemServer分析
  9. Android(安卓)系统框架介绍
  10. LeakCanary使用详细教程(附Demo)