package irdc.ex08_11;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
/* import相关class */
public class EX08_11 extends Activity implements OnClickListener
{
/*
* 变量声明 filename:上传后在服务器上的文件名称 uploadFile:要上传的文件路径 actionUrl:服务器上对应的程序路径
*/
private String uploadFile = "/storage/sdcard/01.png";
private String actionUrl = "http://192.168.0.120:8080/police/fileUpload.action";
private TextView mText1;
private TextView mText2;
private TextView mText3;
private Button mButton,mButton1;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mText1 = (TextView) findViewById(R.id.myText2);
mText1.setText("文件路径:\n" + uploadFile);
mText2 = (TextView) findViewById(R.id.myText3);
mText2.setText("上传网址:\n" + actionUrl);
mText3 = (TextView) findViewById(R.id.textView1);
// mText3.setText("上传网址:\n" + actionUrl);
/* 设置mButton的onClick事件处理 */
mButton = (Button) findViewById(R.id.myButton);
mButton.setOnClickListener(this);
mButton1 = (Button) findViewById(R.id.button1);
mButton1.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.myButton:
upload();
break;
case R.id.button1:
login();
break;
default:
break;
}
}
private void login()
{
Toast.makeText(this, "login",Toast.LENGTH_LONG).show();
String URL1 = "http://192.168.0.120:8080/police/login.action?username=1111&password=22222";
try {
//获取后台返回的Json对象
JSONObject mJsonObject = JSONUtil.getJSON(URL1);
//获得学生数组
//JSONArray mJsonArray = mJsonObject.getJSONArray("students");
//获取班级
String classes = mJsonObject.getString("username");
mText3.setText(mJsonObject.toString()+" dfgfd"+classes);
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/* 上传文件至Server的方法 */
public void upload() {
Toast.makeText(this, "upload begin",Toast.LENGTH_SHORT).show();
HttpURLConnection connection = null;
DataOutputStream dos = null;
FileInputStream fin = null;
String boundary = "---------------------------265001916915724";
// 真机调试的话,这里url需要改成电脑ip
// 模拟机用10.0.0.2,127.0.0.1被tomcat占用了
String lineEnd = "\r\n";
final String endline = "--" + boundary + "--\r\n";//数据结束标志
try {
Toast.makeText(this, "try",Toast.LENGTH_SHORT).show();
URL url = new URL(actionUrl);
connection = (HttpURLConnection) url.openConnection();
// 允许向url流中读写数据
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(true);
// 启动post方法
connection.setRequestMethod("POST");
// 设置请求头内容
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("Content-Type", "text/plain");
// 伪造请求头
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
// 开始伪造POST Data里面的数据
dos = new DataOutputStream(connection.getOutputStream());
//fin = new FileInputStream(uploadFile);
//用HashMap封数据
Map<String, String> params = new HashMap<String, String>();
params.put("username", "张三");
params.put("password", "123456");
Toast.makeText(this, "数据信息的发送方法开始",Toast.LENGTH_SHORT).show();
StringBuilder textEntity = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {//构造文本类型参数的实体数据
textEntity.append("--");
textEntity.append(boundary);
textEntity.append("\r\n");
textEntity.append("Content-Disposition: form-data; name=\""+entry.getKey()+"\"\r\n\r\n");
textEntity.append(entry.getValue());
textEntity.append("\r\n");
//计算传输给服务器的实体数据总长度
}
String accept = "Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n";
dos.write(accept.getBytes());
//把所有文本类型的实体数据发送出来
dos.write(textEntity.toString().getBytes());
Toast.makeText(this, "数据信息的发送方法结束",Toast.LENGTH_SHORT).show();
Toast.makeText(this, "开始上传images",Toast.LENGTH_SHORT).show();
/*文件图片的发送方式*/
fin = new FileInputStream(uploadFile);
//--------------------开始伪造上传images.jpg的信息-----------------------------------
/*String fileMeta = "--" + boundary + lineEnd +
"Content-Disposition: form-data; name=\"file\"; filename=\"" + uploadFile + "\"" + lineEnd +
"Content-Type: image/jpeg" + lineEnd + lineEnd;*/
String fileMeta = "--" + boundary + lineEnd +
"Content-Disposition: form-data; name=\"file\"; filename=\"" + uploadFile + "\"" + lineEnd +
"Content-Type:video/mpeg4" + lineEnd + lineEnd;
// 向流中写入fileMeta
dos.write(fileMeta.getBytes());
// 取得本地图片的字节流,向url流中写入图片字节流
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fin.read(bytes)) != -1) {
dos.write(bytes, 0, len);
}
dos.writeBytes(lineEnd+lineEnd);
//--------------------伪造images.jpg信息结束-----------------------------------
Toast.makeText(this, "结束上传",Toast.LENGTH_SHORT).show();
// POST Data结束
dos.writeBytes("--" + boundary + "--");
// Server端返回的信息
System.out.println("" + connection.getResponseCode());
System.out.println("" + connection.getResponseMessage());
if (dos != null) {
dos.flush();
dos.close();
}
Toast.makeText(this, "upload success-----------------------------------------",Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "upload fail",Toast.LENGTH_SHORT).show();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
android和tomcat文件上传和数据交互 (908个子文件)
resources.ap_ 6KB
upload_file_android.apk 14KB
EX08_11.class 7KB
BaseAction.class 4KB
TimeUtil.class 4KB
TuPianUtil.class 4KB
SendEmailUtil.class 4KB
DataDaoImpl.class 4KB
JSONUtil.class 4KB
UploadAction.class 3KB
User.class 2KB
LoginAction.class 2KB
MD5Util.class 2KB
UserInterceptor.class 1KB
Picture.class 1KB
DataDaoImpl$1.class 1KB
StringUtil.class 999B
Constant.class 956B
Test.class 876B
DataDao.class 784B
Test.class 770B
R$id.class 556B
LinkServiceImpl.class 555B
R.class 489B
R$string.class 476B
R$drawable.class 440B
R$layout.class 376B
BuildConfig.class 333B
R$attr.class 322B
LinkService.class 129B
.classpath 598B
.classpath 475B
org.eclipse.wst.common.component 456B
org.eclipse.wst.jsdt.ui.superType.container 49B
easyui.css 55KB
easyui.css 54KB
easyui.css 54KB
easyui.css 54KB
easyui.css 51KB
easyui.css 48KB
easyui.css 48KB
easyui.css 48KB
easyui.css 44KB
easyui.css 44KB
easyui.css 44KB
easyui.css 44KB
easyui.css 44KB
easyui.css 44KB
tabs.css 9KB
tabs.css 9KB
tabs.css 9KB
tabs.css 9KB
tabs.css 8KB
tabs.css 8KB
tabs.css 8KB
tabs.css 7KB
mobile.css 7KB
tabs.css 6KB
tabs.css 6KB
tabs.css 6KB
tabs.css 6KB
tabs.css 6KB
tabs.css 6KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
color.css 4KB
datepicker.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
calendar.css 4KB
calendar.css 4KB
calendar.css 4KB
calendar.css 4KB
calendar.css 4KB
calendar.css 4KB
calendar.css 4KB
共 908 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
资源评论
- 摘星的你2018-08-22还行,可以参考
- qzf3622699942017-03-16还不错。。。。。。。。
hengfeiyu1
- 粉丝: 1
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C语言基础-C语言编程基础之Leetcode编程题解之第39题组合总和.zip
- C语言基础-C语言编程基础之Leetcode编程题解之第38题外观数列.zip
- C语言基础-C语言编程基础之Leetcode编程题解之第37题解数独.zip
- C语言基础-C语言编程基础之Leetcode编程题解之第36题有效的数独.zip
- C语言基础-C语言编程基础之Leetcode编程题解之第35题搜索插入位置.zip
- index.wxml
- C语言基础-C语言编程基础之Leetcode编程题解之第33题搜索旋转排序数组.zip
- 基于Python实现的手写数字识别系统源码.zip
- 从网页提取禁止转载的文字
- C语言基础-C语言编程基础之Leetcode编程题解之第32题最长有效括号.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功