import java.io.*; import java.net.*; import java.util.HashMap; import java.util.Map; public class Upload { public static void main(String[] args) { try { String actionUrl = "http://localhost:8080/web/upload.do"; Map<String, String> params = new HashMap<String, String>(); params.put("name", "文档"); params.put("type", "docx"); Map<String, File> files = new HashMap<>(); files.put("Linux开VPN(基于Ubuntu).docx", new File("d:\\Linux开VPN(基于Ubuntu).docx")); String BOUNDARY = java.util.UUID.randomUUID().toString(); String PREFIX = "--", LINEND = "\r\n"; String MULTIPART_FROM_DATA = "multipart/form-data"; String CHARSET = "UTF-8"; URL uri = new URL(actionUrl); HttpURLConnection conn = (HttpURLConnection) uri.openConnection(); conn.setReadTimeout(5 * 1000); // 缓存的最长时间 conn.setDoInput(true);// 允许输入 conn.setDoOutput(true);// 允许输出 conn.setUseCaches(false); // 不允许使用缓存 conn.setRequestMethod("POST"); conn.setRequestProperty("connection", "keep-alive"); conn.setRequestProperty("charsert", "UTF-8"); conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA+ ";boundary=" + BOUNDARY); // 首先组拼文本类型的参数 StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : params.entrySet()) { sb.append(PREFIX); sb.append(BOUNDARY); sb.append(LINEND); sb.append("Content-Disposition: form-data; name=\""+ entry.getKey() + "\"" + LINEND); sb.append("Content-Type: text/plain; charset=" + CHARSET+ LINEND); sb.append("Content-Transfer-Encoding: 8bit" + LINEND); sb.append(LINEND); sb.append(entry.getValue()); sb.append(LINEND); } DataOutputStream outStream = new DataOutputStream(conn.getOutputStream()); outStream.write(sb.toString().getBytes()); // 发送文件数据 if (files != null) for (Map.Entry<String, File> file : files.entrySet()) { StringBuilder sb1 = new StringBuilder(); sb1.append(PREFIX); sb1.append(BOUNDARY); sb1.append(LINEND); sb1.append("Content-Disposition: form-data; name=\"j5eQkZqZlpOa\"; filename=\""+ file.getKey() + "\"" + LINEND); sb1.append("Content-Type: application/octet-stream; charset="+ CHARSET + LINEND); sb1.append(LINEND); outStream.write(sb1.toString().getBytes()); InputStream is = new FileInputStream(file.getValue()); byte[] buffer = new byte[1024]; int len = 0; while ((len = is.read(buffer)) != -1) { outStream.write(buffer, 0, len); } is.close(); outStream.write(LINEND.getBytes()); } // 请求结束标志 byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes(); outStream.write(end_data); outStream.flush(); // 得到响应* int res = conn.getResponseCode(); if (res == 200) { InputStream in = conn.getInputStream(); int ch; StringBuilder sb2 = new StringBuilder(); while ((ch = in.read()) != -1) { sb2.append((char) ch); } } BufferedReader reader=new BufferedReader(new InputStreamReader(conn.getInputStream())); while (reader.read()!=-1) { System.out.println(reader.readLine()); } outStream.close(); conn.disconnect(); } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
JAVA使用HttpClient模拟浏览器GET、POST请求 在本文中,我们将介绍如何使用Apache Commons HttpClient库来模拟浏览器的GET和POST请求。HttpClient库是一个开放源码的项目,是Apache Commons项目的一部分,旨在简化...
这个“java模拟微信浏览器访问.rar”压缩包中的主要文件是“MonitorWeixinBrowser.java”,我们可以推测这是一个Java程序,用于模拟微信内置浏览器的行为。下面将详细介绍这个主题的相关知识点。 1. **Java HTTP ...
在Java编程中,有时我们需要模拟浏览器发送HTTP请求,例如调用外部接口或API。`HttpURLConnection`是Java标准库提供的一种轻量级的HTTP客户端,它允许我们在后台代码中发送GET和POST请求。本篇文章将深入讲解如何...
本篇将详细探讨Java处理文件上传的底层实现,以及如何使用Java模拟POST协议来实现文件上传。 首先,我们需要理解文件上传的基本原理。在HTTP协议中,文件上传通常通过POST请求进行。当用户在表单中选择文件并提交时...
在Java Web开发中,表单上传是常见的功能之一,尤其是当用户需要上传多个文件时。本文将详细讲解如何实现这个功能,主要涉及HTML表单、Servlet、MVC框架(如Spring MVC)以及文件处理的相关知识。 1. HTML表单设置...
Java Web 中 HttpClient 模拟浏览器登录后发起请求是指在 Java Web 应用程序中使用 HttpClient 库模拟浏览器的行为,模拟浏览器登录到服务器,然后发起请求获取资源。这种技术广泛应用于爬虫、自动化测试、数据爬取...
在本文中,我们将深入探讨如何使用HttpClient来模拟浏览器的GET和POST操作,以及相关的源码分析和工具使用技巧。 首先,让我们了解GET和POST请求的基本概念。GET是HTTP协议中最常见的请求方法,通常用于获取服务器...
Advanced REST Client(ARC)是一款强大的开发工具,专为这个目的设计,它允许用户模拟浏览器发送各种类型的HTTP请求,并查看详细的响应结果。这款工具对于前端开发者、后端开发者以及API测试人员来说都极具价值。 ...
再有如通过HTTP来上传文件呢?不需要头疼,这些问题有了“它”就很容易解决了! <br>我们不可能列举所有可能的顽固,我们会针对几种最常见的问题进行处理。当然了,正如前面说到的,如果我们自己使用java.net....
本文详细介绍了如何使用Java模拟发送GET和POST请求,并对Cookie进行了处理。掌握了这些技术后,你就可以更灵活地与Web服务交互,实现自动化任务或数据抓取等功能。需要注意的是,在实际应用中还应考虑异常处理、编码...
在本文中,我们将深入探讨如何使用Java编程语言来实现一个简单的浏览器功能。Java以其跨平台性和丰富的类库,成为开发这种应用的理想选择。NETBEANS是一个流行的集成开发环境(IDE),它提供了用户友好的界面和强大...
使用HttpClient来模拟浏览器GET_POST HttpClient是一个Apache开源组织中的项目,隶属于Jakarta的commons项目,旨在简化HTTP客户端与服务器进行各种通讯编程。通过使用HttpClient,可以轻松地解决以前很头疼的事情,...
在构建浏览器实例时,需要创建各种类来模拟浏览器的功能,如URL解析、HTTP请求等。 2. **JAVA网络编程**:此实例涉及JAVA的`java.net`包,它包含了处理网络连接的类,如`URL`、`URLConnection`和`HttpURLConnection...
HttpURLConnection可以模拟浏览器的行为,向服务器发送请求,并获取服务器的响应。 二、JAVA通过HttpURLConnection上传文件的方法 下面是一个使用HttpURLConnection上传文件的示例代码: ```java public class ...
6. **模拟浏览器行为**: 为了使模拟登录更接近真实用户,我们可能需要复制浏览器的一些行为,比如设置User-Agent,处理Referer字段,以及处理其他可能影响登录的HTTP头。 7. **持久化会话**: 如果登录成功,我们...
5. **GUI编程**:Java Swing或JavaFX库用于创建用户界面,模拟浏览器的各种功能如地址栏、前进/后退按钮、书签等。 6. **多线程**:为了实现异步加载,浏览器通常会使用多线程,一个线程处理网络请求,另一个线程...
Java模拟淘宝登录源码是一种常见的网络编程技术,主要用于自动化测试、数据抓取或者模拟用户行为。在这个场景中,我们使用的工具是HTTPClient库,这是一个强大的Java HTTP客户端应用编程接口,可以方便地处理HTTP...
这个库广泛应用于Web服务调用、API接口测试以及自动化脚本中,因为它可以模拟浏览器的行为,进行GET、POST等复杂的HTTP请求。 在Java编程中,HttpClient提供了一个强大的API,允许我们创建自定义的HTTP请求,设置...
在Java编程中,HttpClient库是Apache提供的一款强大的HTTP客户端工具,用于执行HTTP请求,包括GET、POST、PUT等多种HTTP方法。...对于更复杂的情况,可能需要使用HTMLUnit或Selenium等工具进行浏览器级别的模拟登录。