java仿form表单提交数据

来源:互联网 发布:mac电脑硬盘分区丢失 编辑:程序博客网 时间:2024/05/17 05:02
import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;public class TestUploadPhoto {public int send(String url, String filePath) throws IOException {File file = new File(filePath);if (!file.exists() || !file.isFile()) {return -1;}/*** * 第一部分*/URL urlObj = new URL(url);HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();/*** * 设置关键值*/con.setRequestMethod("POST"); // 以Post方式提交表单,默认get方式con.setDoInput(true);con.setDoOutput(true);con.setUseCaches(false); // post方式不能使用缓存// 设置请求头信息con.setRequestProperty("Connection", "Keep-Alive");con.setRequestProperty("Charset", "UTF-8");// 设置边界String BOUNDARY = "----------" + System.currentTimeMillis();con.setRequestProperty("Content-Type", "multipart/form-data; boundary="+ BOUNDARY);// 请求正文信息OutputStream out = new DataOutputStream(con.getOutputStream());//拼接数据StringBuilder sb1 = new StringBuilder();sb1.append("--"); // ////////必须多两道线sb1.append(BOUNDARY);sb1.append("\r\n");sb1.append("--").append(BOUNDARY).append("\r\n").append("Content-Disposition: form-data; name=\"userid\";").append("\r\n\r\n12").append("\r\n");//.append("\r\n\r\n12").append("/r/n").append("--").append(BOUNDARY).append("/r/n");  byte[] head1 = sb1.toString().getBytes("utf-8");out.write(head1);//out.write(("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8"));//拼接数据结束// 第一部分:StringBuilder sb = new StringBuilder();//sb.append("--").append(BOUNDARY).append("\r\n").append("Content-Disposition: form-data; name=\"").append("userid").append("\"/r/n/r/n").append(           //"12").append("/r/n");  sb.append("--"); // ////////必须多两道线sb.append(BOUNDARY);sb.append("\r\n");sb.append("Content-Disposition: form-data;name=\"pic\";filename=\""+ file.getName() + "\"\r\n").append("Content-Type:application/octet-stream\r\n\r\n");byte[] head = sb.toString().getBytes("utf-8");// 获得输出流//OutputStream out = new DataOutputStream(con.getOutputStream());out.write(head);// 文件正文部分DataInputStream in = new DataInputStream(new FileInputStream(file));int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = in.read(bufferOut)) != -1) {out.write(bufferOut, 0, bytes);}in.close();// 结尾部分byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线out.write(foot);out.flush();out.close();/*** * 读取服务器响应,必须读取,否则提交不成功*///return con.getResponseCode();return con.getResponseCode();/*** * 下面的方式读取也是可以的*/// try {// // 定义BufferedReader输入流来读取URL的响应// BufferedReader reader = new BufferedReader(new InputStreamReader(// con.getInputStream()));// String line = null;// while ((line = reader.readLine()) != null) {// System.out.println(line);// }// } catch (Exception e) {// System.out.println("发送POST请求出现异常!" + e);// e.printStackTrace();// }}public static void main(String[] args) throws IOException {TestUploadPhoto up = new TestUploadPhoto();System.out.println(up.send("http://192.168.1.100:8080/5aiyointerface/photo/uploadphoto.do","D:\\guide04.jpg"));        }}