用android 通过http协议提交数据至服务器 content的内容

代码如下:

private static JSONObject connUpload(String baseUrl, Map<String, String> params, String content) throws IOException, JSONException {

        String end = "\r\n";
String hyphens = "--";
String boundary = UUID.randomUUID().toString().replace("-", ""); //将需求连接转换成实际链接 如加上手机的基本信息等。
String realUrl = HttpUtil.buildUrl(baseUrl);
LogUtil.i("realurl:" + realUrl); URL url = new URL(realUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(TIMEOUT); //Post 请求不能使用缓存
conn.setUseCaches(false);
conn.setDoOutput(true); conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Charset", "UTF-8");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
conn.setRequestProperty("enctype", "multipart/form-data;"); DataOutputStream writer = new DataOutputStream(conn.getOutputStream()); writer.writeBytes("Content-Type: multipart/form-data;boundary=" + boundary + end);
writer.writeBytes(hyphens + boundary + end); if(params != null && params.size() > 0) {
for(String key : params.keySet()) {

if(params.get(key) != null) {
                      writer.writeBytes("Content-Disposition: form-data; name=\""+ key + "\"" + end + end);

//注意此处不能用writeBytes 不然会出现乱码问题
                      writer.writeUTF(params.get(key));
                      writer.writeBytes(end + hyphens + boundary + end);
                 }

            }
} // 构造DataOutputStream流
writer.writeBytes("Content-Disposition: form-data; " + "name=\"file\";filename=\"" + content + "\"" + end);
writer.writeBytes("Content-Type: multipart/form-data;" + end);
writer.writeBytes(end); /* 取得文件的FileInputStream */
FileInputStream fStream = new FileInputStream(content);
/* 设定每次写入1024bytes */
byte[] buffer = new byte[Constant.NET_BUFF_SIZE];
int length = -1;
/* 从文件读取数据到缓冲区 */
while ((length = fStream.read(buffer)) != -1) {
writer.write(buffer, 0, length);
}
writer.writeBytes(end);
fStream.close(); writer.writeBytes(hyphens + boundary + hyphens + end);
writer.flush();
writer.close(); //, Constant.CHARSET
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); sb = new StringBuilder();
char[] buff = new char[Constant.NET_BUFF_SIZE];
int flag = 0;
while((flag = reader.read(buff)) != -1) {
sb.append(buff, 0, flag);
} reader.close();
conn.disconnect(); LogUtil.i("response:" + sb); return new JSONObject(sb.toString());
}

Http协议之content的更多相关文章

  1. 有关使用HTTP协议传输二进制文件

    HTTP协议是基于字符(ASCII)的,当Content-Type项为text/xml,则内容是文本格式:当二进制格式时,Content-Type项为image/gif,就是了.例如,浏览器请求一张图 ...

  2. 从Nodejs脚本到vue首页看开源始末的DemoHouse

    最近上Github看见了大漠的DemoHouse项目,看到Issues说准备做一个首页,于是我的第一想法就是做一个md列表页面,md文件可以很容易的生成一个html文件.刚刚做好脚本文件,可以生成li ...

  3. Android中的跨进程通信方法实例及特点分析(二):ContentProvider

    1.ContentProvider简单介绍 在Android中有些数据(如通讯录.音频.视频文件等)是要供非常多应用程序使用的.为了更好地对外提供数据.Android系统给我们提供了Content P ...

  4. Android开发之监听发出的短信

    执行效果图: 预备知识: 为了监听指定的ContentProvider的数据的改变,须要通过ContentResolver向指定Uri注冊CotentObserver监听器.ContentResolv ...

  5. Anndroid 使用相机或相册打开图片

    安卓操作相机or相册 笔者做这方面测试的时候,没遇到什么大坑基本上,需要注意的有两点 1.   使用相册打开读取图片需要使用运行时权限,而且还是要在AndroidManifest.xml中进行权限声明 ...

  6. VSCode插件开发全攻略(五)跳转到定义、自动补全、悬停提示

    更多文章请戳VSCode插件开发全攻略系列目录导航. 跳转到定义 跳转到定义其实很简单,通过vscode.languages.registerDefinitionProvider注册一个provide ...

  7. [android] 内容提供者实现

    [android] 内容提供者实现 上一节的主机名类似网络上的域名,协议是content://,可以定义一下规则 content://主机名/insert 添加操作 content://主机名/del ...

  8. JavaAndroid开发部分API

    JavaAndroid开发中的部分系统API 四大组件,都需要在清单文件中配置 Activity: 用来提供一个能让用户操作并与之交互的界面 onCreate(): 自动调用的方法, 在其中加载布局显 ...

  9. android 管理手机短信

    为了看代码方便,一边在网上google资料,一边看Android java 源代码. 偶然发现了一个类MmsSmsDatabaseHelper.java,原来android将所有的短信信息都存入了mm ...

随机推荐

  1. 利用IK分词器,自定义分词规则

    IK分词源码下载地址:https://code.google.com/p/ik-analyzer/downloads/list lucene源码下载地址:http://www.eu.apache.or ...

  2. varnish(转http://www.ttlsa.com/nginx/varnish-4-configure-file/)

    2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ...

  3. 【POJ】1611 The Suspects

    题目链接:http://poj.org/problem?id=1611 题意:有学生感染了SARS.一个学生可以加入很多小组.n个学生m个小组,每个小组有k个组内成员,后跟着k个成员的组内编号.让你求 ...

  4. 【POJ】3268 Silver Cow Party

    题目链接:http://poj.org/problem?id=3268 题意 :有N头奶牛,M条单向路.X奶牛开party,其他奶牛要去它那里.每头奶牛去完X那里还要返回.去回都是走的最短路.现在问这 ...

  5. nio读取文件,输出文件

    io流的一种: package com.cxy.ssp.Automic; import java.io.FileOutputStream; import java.io.IOException; im ...

  6. pip修改官方源为豆瓣源

    参考地址: https://www.jianshu.com/p/10a23d6a93c6 1.临时修改 pip install pythonModuleName -i https://pypi.dou ...

  7. duboo注解使用详解

    一.背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行. 当越来越的的接口与实现类的增加后,duboo的xml配置会越来越多,为了防止 ...

  8. 与960 Grid System相关的那些问题

    为什么是960px? 一直以来,网页设计师都希望寻找一个理想的页面宽度值,既能适应大部分屏幕,又尽可能的在一行显示更多的信息. 我们首先会考虑的是全屏自适应,但这并非一个好的解决方案.一方面,需要做一 ...

  9. Activiti学习笔记1 — 下载与开发环境的配置

    一.下载 JDK下载URL: Tomcat下载URL:http://tomcat.apache.org/ Eclipse下载URL:http://www.oracle.com/technetwork/ ...

  10. java 冒泡排序法、选择排序

    1.冒泡排序 /* * 冒泡排序 * 外层控制循环多少趟,内层控制每一趟的循环次数 */ public class Test08 { public static void main(String[] ...