java发送url请求进行文件的提交及后台struts2的action接收处理
作者:网络转载 发布时间:[ 2013/7/2 10:42:39 ] 推荐标签:
java发送url请求进行文件的提交以及后台struts2的action接收处理
1、java模拟表单方式发送url请求进行文件的提交
/**
*
* @作者 王建明
* @创建日期 2013-06-27
* @创建时间 19:28:18
* @描述 —— 模拟表单进行文件数据提交
*/
private static void testSimulateFormToPostFile() {
String localPath = "F:\软件开发经验\DeleteNullDir.java";
File file = null;// 本地文件
URL url = null;// 服务器action地址
StringBuffer sb_cookie = null;// 拼装cookies
StringBuffer sb_body = null;// 报文体
HttpURLConnection httpUrl = null;// http协议类
OutputStream fos = null;// 文件流
FileInputStream fis = null;// 服务器回写响应流
BufferedReader br = null;// 读取响应
try {
file = new File(localPath);
if (!file.exists()) {
throw new Exception();
}
String _url = http://10.49.61.101:9999/finance/ajaxUploadFile.do;
// Cookie[] cs = request.getCookies();
// sb_cookie = new StringBuffer();
// for (Cookie c : cs) {
// sb_cookie.append(" ");
// sb_cookie.append(c.getName());
// sb_cookie.append("=");
// sb_cookie.append(c.getValue());
// sb_cookie.append(";");
// }
// String cookie = sb_cookie.substring(0, sb_cookie.length() - 1);//
// cookie结束不含有";"
String boundary = "---------------------------7da2e536604c8";
url = new URL(_url);
httpUrl = (HttpURLConnection) url.openConnection();// 创建连接
httpUrl.setDoInput(true);// 创建输入流,必须有
httpUrl.setDoOutput(true);// 创建输出流,必须有
httpUrl.setUseCaches(false);// 不缓存
httpUrl.setConnectTimeout(30000);// 连接超时
httpUrl.setReadTimeout(30000);// 响应超时
httpUrl.setRequestMethod("POST");
httpUrl.setRequestProperty("Content-Length", "" + file.length());// 文件大小
httpUrl.addRequestProperty("Charset", "UTF-8");
httpUrl.addRequestProperty("Content-Type",
"multipart/form-data;boundary=" + boundary);
httpUrl.addRequestProperty("Connection", "Keep-Alive");// 连接方式,此处为长连接
// httpUrl.addRequestProperty("Cookie", cookie);// 权限验证使用
fos = httpUrl.getOutputStream();
// 注意,http协议,是流传输,全部内容都要转换为byte类型
sb_body = new StringBuffer();
// 分隔符
sb_body.append("--");
sb_body.append(boundary);
sb_body.append("
");
// 文档类型
sb_body.append("Content-Disposition: form-data;name="upFile";"
+ "filename="" + "upload_data.xlsx" + ""
");
sb_body.append("Content-Type:application/ms-word
");
byte[] head = sb_body.toString().getBytes();
fos.write(head);
// 文件内容
fis = new FileInputStream(file);
byte[] read = new byte[2048];
int offset = 0;
while ((offset = fis.read(read)) != -1) {
fos.write(read, 0, offset);
}
fos.write(("
--" + boundary + "--
").getBytes());
fos.flush();// 发送请求
// HTTP响应
br = new BufferedReader(new InputStreamReader(httpUrl
.getInputStream()));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
2、java使用流的方式发送url请求进行文件的提交
/**
*
* @作者 王建明
* @创建日期 2013-06-27
* @创建时间 19:30:05
* @描述 —— 将文件流直接post的方式进行文件的提交
*/
private static void testPostInStream() {
try {
URL url = new URL(
"http://10.49.61.101:9999/finance/ajaxUploadFileTwo.do?filePath=/c/v/b/&fileName=aaa.xlsx);
// 发送POST请求必须设置如下两行
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "text/html");
conn.setRequestProperty("Cache-Control", "no-cache");
conn.setRequestProperty("Charsert", "UTF-8");
// conn.setRequestProperty("upFileFileName", "upFileFileName.doc");
conn.connect();
conn.setConnectTimeout(10000);
OutputStream out = conn.getOutputStream();
File file = new File("F:\软件开发经验NumberFormateUtil.java>");
DataInputStream in = new DataInputStream(new FileInputStream(file));
int bytes = 0;
byte[] buffer = new byte[1024];
while ((bytes = in.read(buffer)) != -1) {
out.write(buffer, 0, bytes);
}
in.close();
out.flush();
out.close();
BufferedReader br = new BufferedReader(new InputStreamReader(conn
.getInputStream()));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println(sb.toString());
conn.disconnect();
System.out.println("over");
} catch (Exception e) {
System.out.println("发送文件出现异常!" + e);
e.printStackTrace();
}
}
相关推荐
更新发布
常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11系统性能测试及调优前期准备
2021/4/15 14:41:29国内比较好用的5款测试管理工具
2021/3/25 17:23:31