当前位置: 移动技术网 > IT编程>移动开发>Android > Android 通过httppost上传文本文件到服务器的实例代码

Android 通过httppost上传文本文件到服务器的实例代码

2019年07月24日  | 移动技术网IT编程  | 我要评论

ca1948,九阴真经慕白剑鞘,被捕日本间谍或涉中国航母情报

废话不多说了,直接给大家贴关键代码了。

/**
* 往服务器上上传文本 比如log日志
* @param urlstr 请求的url 
* @param uploadfile log日志的路径 
* /mnt/shell/emulated/0/log/log.log 
* @param newname log日志的名字 log.log
* @return
*/
public static void httppost(activity activity,string urlstr,string uploadfile,string newname) {
logutil.info("getehttppostt", "urlstr="+urlstr+";uploadfile="+uploadfile+";newname="+newname,"i");
string end = "\r\n";
string twohyphens = "--";
string boundary = "*****";//边界标识 
int time_out = 10*1000; //超时时间
httpurlconnection con = null; 
dataoutputstream ds = null; 
inputstream is = null;
try {
url url = new url(urlstr);
con = (httpurlconnection) url.openconnection();
con.setreadtimeout(time_out);
con.setconnecttimeout(time_out);
/* 允许input、output,不使用cache */
con.setdoinput(true);
con.setdooutput(true);
con.setusecaches(false);
// 设置http连接属性
con.setrequestmethod("post");//请求方式
con.setrequestproperty("connection", "keep-alive");//在一次tcp连接中可以持续发送多份数据而不会断开连接
con.setrequestproperty("charset", "utf-8");//设置编码
con.setrequestproperty("content-type",//multipart/form-data能上传文件的编码格式
"multipart/form-data;boundary=" + boundary);
ds = new dataoutputstream(con.getoutputstream());
ds.writebytes(twohyphens + boundary + end);
ds.writebytes("content-disposition: form-data; "
+ "name=\"stblog\";filename=\"" + newname + "\"" + end);
ds.writebytes(end);
// 取得文件的fileinputstream
fileinputstream fstream = new fileinputstream(uploadfile);
/* 设置每次写入1024bytes */
int buffersize = 1024;
byte[] buffer = new byte[buffersize];
int length = -1;
/* 从文件读取数据至缓冲区 */
while ((length = fstream.read(buffer)) != -1) {
/* 将资料写入dataoutputstream中 */
ds.write(buffer, 0, length);
}
ds.writebytes(end);
ds.writebytes(twohyphens + boundary + twohyphens + end);//结束
fstream.close();
ds.flush();
/* 取得response内容 */
is = con.getinputstream();
int ch;
stringbuffer b = new stringbuffer();
while ((ch = is.read()) != -1) {
b.append((char) ch);
}
/* 将response显示于dialog */
showdialog(activity,true,uploadfile,"上传成功" + b.tostring().trim());
} catch (exception e) {
showdialog(activity,false,uploadfile,"上传失败" + e);
}finally {
/* 关闭dataoutputstream */
if(ds!=null){
try {
ds.close();
} catch (ioexception e) {
e.printstacktrace();
}
}
if (is != null) {
try {
is.close();
} catch (ioexception e) {
e.printstacktrace();
}
}
if (con != null) {
con.disconnect();
}
}
}
/* 显示dialog的method */
private static void showdialog(final activity activity,final boolean issuccess,final string uploadfile,final string mess) {
activity.runonuithread(new runnable() {
@override
public void run() {
new alertdialog.builder(activity).settitle("message")
.setmessage(mess)
.setnegativebutton("确定", new dialoginterface.onclicklistener() {
public void onclick(dialoginterface dialog, int which) {
file file = new file(uploadfile);
if(file.exists()&&issuccess){//日志文件存在且上传日志成功
file.delete();
toast.maketext(activity, "log日志已删除", toast.length_short).show();
}
}
}).show();
}
});
}

以上内容是小编给大家介绍的android 通过httppost上传文本文件到服务器的实例代码,代码简单易懂,附有注释

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网