android上传字符串到服务器,【图片】【转】通过Android 客户端上传数据到服务器【aide吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
public class HttpRequester {
/**
* 直接通过HTTP 协议提交数据到服务器,实现如下面表单提交功能:
*
ACTION="http://192.168.0.200:8080/ssi/fileload/test.do" enctype="multipart/form-data">
* @param actionUrl 上传路径(注:避免使用localhost 或127.0.0.1这样的路径
测试, 因为它会指向手机模拟器, 你可以使用http://www.itcast.cn 或
http://192.168.1.10:8080这样的路径测试)
* @param params 请求参数key 为参数名,value 为参数值
* @param file 上传文件
*/
public static String post(String actionUrl, Map params, FormFile[]
files) {
try {
String BOUNDARY = "---------7d4a6d158c9"; //数据分隔线
String MULTIPART_FORM_DATA = "multipart/form-data";
URL url = new URL(actionUrl);
HttpURLConnection conn = (HttpURLConnection)
url.openConnection();
conn.setConnectTimeout(5* 1000);
conn.setDoInput(true);//允许输入
conn.setDoOutput(true);//允许输出
conn.setUseCaches(false);//不使用Cache
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Charset", "UTF-8");
conn.setRequestProperty("Content-Type", MULTIPART_FORM_DATA
+ "; boundary=" + BOUNDARY);
StringBuilder sb = new StringBuilder();
for (Map.Entry entry : params.entrySet()) {//构建表单
字段内容
sb.append("--");
sb.append(BOUNDARY);
sb.append("\r\n");
sb.append("Content-Disposition: form-data; name=\""+
entry.getKey() + "\"\r\n\r\n");
sb.append(entry.getValue());
sb.append("\r\n");
}
DataOutputStream outStream = new
DataOutputStream(conn.getOutputStream());
outStream.write(sb.toString().getBytes());//发送表单字段数据
for(FormFile file : files){//发送文件数据
StringBuilder split = new StringBuilder();
split.append("--");
split.append(BOUNDARY);
split.append("\r\n");
split.append("Content-Disposition: form-data;name=\""+
file.getFormname()+"\";filename=\""+ file.getFilname() + "\"\r\n");
split.append("Content-Type: "+ file.getContentType()+"\r\n\r\n");
outStream.write(split.toString().getBytes());
if(file.getInStream()!=null){
byte[] buffer = new byte[1024];
int len = 0;
while((len = file.getInStream().read(buffer))!=-1){
outStream.write(buffer, 0, len);
}
file.getInStream().close();
}else{
outStream.write(file.getData(), 0, file.getData().length);
}
outStream.write("\r\n".getBytes());
}
byte[] end_data = ("--" + BOUNDARY + "--\r\n").getBytes();//数据结
束标志
outStream.write(end_data);
outStream.flush();
int cah = conn.getResponseCode();
if (cah != 200) throw new RuntimeException("请求url 失败");
InputStream is = conn.getInputStream();
int ch;
StringBuilder b = new StringBuilder();
while( (ch = is.read()) != -1 ){
b.append((char)ch);
}
outStream.close();
conn.disconnect();
return b.toString();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 提交数据到服务器
* @param actionUrl 上传路径(注:避免使用localhost 或127.0.0.1这样的路径
测试, 因为它会指向手机模拟器, 你可以使用http://www.itcast.cn 或
http://192.168.1.10:8080这样的路径测试)
* @param params 请求参数key 为参数名,value 为参数值
* @param file 上传文件
*/
public static String post(String actionUrl, Map params, FormFile
file) {
return post(actionUrl, params, new FormFile[]{file});
}
public static byte[] postFromHttpClient(String path, Map params,
String encode) throws Exception{
List formparams = new ArrayList();// 用
于存放请求参数
for(Map.Entry entry : params.entrySet()){
formparams.add(new BasicNameValuePair(entry.getKey(),
entry.getValue()));
}
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams,
"UTF-8");
HttpPost httppost = new HttpPost(path);
httppost.setEntity(entity);
HttpClient httpclient = new DefaultHttpClient();//看作是浏览器
HttpResponse response = httpclient.execute(httppost);//发送post 请求
return StreamTool.readInputStream(response.getEntity().getContent());
}
/**
* 发送请求
* @param path 请求路径
* @param params 请求参数key 为参数名称value 为参数值
* @param encode 请求参数的编码
*/
public static byte[] post(String path, Map params, String encode)
throws Exception{
//String params = "method=save&name="+ URLEncoder.encode(" 老毕",
"UTF-8")+ "&age=28&";//需要发送的参数
StringBuilder parambuilder = new StringBuilder("");
if(params!=null && !params.isEmpty()){
for(Map.Entry entry : params.entrySet()){
parambuilder.append(entry.getKey()).append("=")
.append(URLEncoder.encode(entry.getValue(),
encode)).append("&");
}
parambuilder.deleteCharAt(parambuilder.length()-1);
}
byte[] data = parambuilder.toString().getBytes();
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);//允许对外发送请求参数
conn.setUseCaches(false);//不进行缓存
conn.setConnectTimeout(5 * 1000);
conn.setRequestMethod("POST");
android上传字符串到服务器,【图片】【转】通过Android 客户端上传数据到服务器【aide吧】_百度贴吧...相关推荐
- java读取服务器图片大小,SpringMVC中MultipartFile上传获取图片的宽度和高度详解
SpringMVC一般使用MultipartFile来做文件的上传,通过MultipartFile的getContentType()方法判定文件的类型(MIME) ".doc":& ...
- android+多处理器+ios,Fotor - 全能图片处理器 #iOS #Android
原标题:Fotor - 全能图片处理器 #iOS #Android 对于很多人来说,照片是社交生活不可割舍的一部分,比起文字来,照片让人们的视觉感受更丰富,因此,一张好照片的诞生就显得很有必要了.好的 ...
- 服务器添加广告信息服务,在客户端上插入广告
您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 在客户端上插入广告 0 ...
- 服务器如何区分多个客户端的信息,如何从服务器向客户端发送已连接客户端的列表,以区分常规消息?...
如果使用纯字节和字符串消息,则很难派生消息传递协议.您最好创建一个模型-类似 public class NetMessage{ public int MessageType{get;set;} pub ...
- linux服务器 图片压缩,Pngquant:Linux上压缩PNG图像的命令行实用工具
[51CTO.com快译]Pngquant是一款免费开源的跨平台命令行有损PNG压缩工具.它基于可移植的libimagequant库,用C99编写.可通过将PNG图像转换成更高效的8位PNG格式来显著 ...
- Android中拍照完就给图片加水印,Android调用相机拍照并添加水印
最近项目提出新需求,要求在拍照后在图片上添加用户信息的水印,so,楼主重新整理封装了一个简单的拍照+水印的工具类,需求不同,仅供参考.文件操作及权限做了适配,支持androidN及以上版本,放心使用. ...
- 新性能服务器图片介绍,G5型图形加速增强型弹性云服务器规格及功能介绍
G5型弹性云服务器使用NVIDIA Tesla V100 GPU显卡,能够支持DirectX.OpenGL.Vulkan接口,提供16GB显存规格,支持最大4096*2160分辨率,满足专业级的图形处 ...
- android开发avg游戏,【图片】谈谈AVG游戏的Android移植(NScripter与吉里吉里)(转)【ons安卓吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 public void getTagHandlers() { // s // 停止执行脚本 tagHandlersMap.put("s" ...
- 传奇服务器怎么修改升级武器成功,【图片】升级武器的经验【传奇百区吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一直想了很久,到底该不该发这贴.最后还是来嘚瑟下.先声明,我不是吹嘘,也不纯粹的**,更不是卖装备的托.发这个升武器的经验帖也不是为了混贴吧经验,就是谈谈 ...
- 服务器图片(绝对地址) 客户端显示问题
做个参考吧,跟之前的有个问题类似 HTML code <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...
最新文章
- 编译乱序(Compiler Reordering)
- 4、Power Query-智能汇总工作簿下的指定或所有工作表数据
- php中数组生成下拉选项,php数组生成html下拉列表的方法
- python settings模块导入不了_Django:无法导入“模块”。检查模块AppConfig.name是否正确 - python...
- tensorflow随笔——C++工程化
- word中填充效果锁定纵横比_操作基础知识Word文字编辑
- FreeTextBox备忘
- 字母c语言ascii码,c语言ascii码对照表
- java语法有哪些_java编程基础语法都有哪些
- ubuntu录制屏幕傻瓜操作 ubuntu screen capture
- python开根号函数的实现
- 我努力了18年,不是为了和你一起喝咖啡姐妹篇
- idea从零到精通目录导航
- amazon aws 亚马逊云服务概述
- 多线程专题之线程死锁原因之谜
- linux 触摸屏驱动分析
- linux内核中使用inet_ntop,linux网络编程之inet_pton和inet_ntop函数
- Oracle 从入门到精通系列 - 前言
- 使用ALTER USER命令修改用户的密码、密码过期,锁定,解锁
- 网络安全知识:什么是最小特权原则?