Java 发送http请求上传文件功能实例
发布时间 - 2026-01-11 01:46:28 点击率:次废话不多说了,直接给大家贴代码了,具体代码如下所示:
package wxapi.WxHelper;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;
public class HttpRequestUtil {
/**
* 发送get请求
*
* @param requestUrl
* 请求url
* @param requestHeader
* 请求头
* @param responseEncoding
* 响应编码
* @return 页面响应html
*/
public static String sendGet(String requestUrl, Map<String, String> requestHeader, String responseEncoding) {
String result = "";
BufferedReader reader = null;
try {
if (requestUrl == null || requestUrl.isEmpty()) {
return result;
}
URL realUrl = new URL(requestUrl);
URLConnection connection = realUrl.openConnection();
connection.setRequestProperty("accept", "text/html, application/xhtml+xml, image/jxr, */*");
connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0");
if (requestHeader != null && requestHeader.size() > 0) {
for (Entry<String, String> entry : requestHeader.entrySet()) {
connection.setRequestProperty(entry.getKey(), entry.getValue());
}
}
connection.connect();
if (responseEncoding == null || responseEncoding.isEmpty()) {
responseEncoding = "UTF-8";
}
reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), responseEncoding));
String line;
while ((line = reader.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!");
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
/**
* 发送post请求
*
* @param requestUrl
* 请求url
* @param requestHeader
* 请求头
* @param formTexts
* 表单数据
* @param files
* 上传文件
* @param requestEncoding
* 请求编码
* @param responseEncoding
* 响应编码
* @return 页面响应html
*/
public static String sendPost(String requestUrl, Map<String, String> requestHeader, Map<String, String> formTexts, Map<String, String> files, String requestEncoding, String responseEncoding) {
OutputStream out = null;
BufferedReader reader = null;
String result = "";
try {
if (requestUrl == null || requestUrl.isEmpty()) {
return result;
}
URL realUrl = new URL(requestUrl);
HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
connection.setRequestProperty("accept", "text/html, application/xhtml+xml, image/jxr, */*");
connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0");
if (requestHeader != null && requestHeader.size() > 0) {
for (Entry<String, String> entry : requestHeader.entrySet()) {
connection.setRequestProperty(entry.getKey(), entry.getValue());
}
}
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
if (requestEncoding == null || requestEncoding.isEmpty()) {
requestEncoding = "UTF-8";
}
if (responseEncoding == null || responseEncoding.isEmpty()) {
responseEncoding = "UTF-8";
}
if (requestHeader != null && requestHeader.size() > 0) {
for (Entry<String, String> entry : requestHeader.entrySet()) {
connection.setRequestProperty(entry.getKey(), entry.getValue());
}
}
if (files == null || files.size() == 0) {
connection.setRequestProperty("content-type", "application/x-www-form-urlencoded");
out = new DataOutputStream(connection.getOutputStream());
if (formTexts != null && formTexts.size() > 0) {
String formData = "";
for (Entry<String, String> entry : formTexts.entrySet()) {
formData += entry.getKey() + "=" + entry.getValue() + "&";
}
formData = formData.substring(0, formData.length() - 1);
out.write(formData.toString().getBytes(requestEncoding));
}
} else {
String boundary = "-----------------------------" + String.valueOf(new Date().getTime());
connection.setRequestProperty("content-type", "multipart/form-data; boundary=" + boundary);
out = new DataOutputStream(connection.getOutputStream());
if (formTexts != null && formTexts.size() > 0) {
StringBuilder sbFormData = new StringBuilder();
for (Entry<String, String> entry : formTexts.entrySet()) {
sbFormData.append("--" + boundary + "\r\n");
sbFormData.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"\r\n\r\n");
sbFormData.append(entry.getValue() + "\r\n");
}
out.write(sbFormData.toString().getBytes(requestEncoding));
}
for (Entry<String, String> entry : files.entrySet()) {
String fileName = entry.getKey();
String filePath = entry.getValue();
if (fileName == null || fileName.isEmpty() || filePath == null || filePath.isEmpty()) {
continue;
}
File file = new File(filePath);
if (!file.exists()) {
continue;
}
out.write(("--" + boundary + "\r\n").getBytes(requestEncoding));
out.write(("Content-Disposition: form-data; name=\"" + fileName + "\"; filename=\"" + file.getName() + "\"\r\n").getBytes(requestEncoding));
out.write(("Content-Type: application/x-msdownload\r\n\r\n").getBytes(requestEncoding));
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();
out.write(("\r\n").getBytes(requestEncoding));
}
out.write(("--" + boundary + "--").getBytes(requestEncoding));
}
out.flush();
out.close();
out = null;
reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), responseEncoding));
String line;
while ((line = reader.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送POST请求出现异常!");
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
if (reader != null) {
reader.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
}
以上所述是小编给大家介绍的Java 发送http请求上传文件功能实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# java
# 发送http请求
# JAVA发送HTTP请求
# 返回HTTP响应内容
# 应用及实例代码
# JAVA通过HttpClient发送HTTP请求的方法示例
# java发送http请求并获取状态码的简单实例
# 详解Java发送HTTP请求
# java利用java.net.URLConnection发送HTTP请求的方法详解
# URLConnection发送HTTP请求的方法_动力节点Java学院整理
# Java 发送http请求(get、post)的示例
# Java 如何使用Feign发送HTTP请求
# Java发送http请求的示例(get与post方法请求)
# JAVA发送HTTP请求的四种方式总结
# 给大家
# 小编
# 上传文件
# 在此
# 说了
# 不多
# 所示
# 表单
# 所述
# 给我留言
# 感谢大家
# 疑问请
# 有任何
# null
# isEmpty
# result
# reader
# openConnection
# setRequestProperty
# realUrl
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
Laravel如何使用Telescope进行调试?(安装和使用教程)
如何在Ubuntu系统下快速搭建WordPress个人网站?
Laravel如何处理CORS跨域请求?(配置示例)
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
javascript中闭包概念与用法深入理解
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
北京网站制作公司哪家好一点,北京租房网站有哪些?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
如何确认建站备案号应放置的具体位置?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
简单实现Android文件上传
简单实现jsp分页
微信小程序 scroll-view组件实现列表页实例代码
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
清除minerd进程的简单方法
Laravel如何使用.env文件管理环境变量?(最佳实践)
如何在Windows 2008云服务器安全搭建网站?
Laravel如何使用模型观察者?(Observer代码示例)
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
Laravel如何优化应用性能?(缓存和优化命令)
如何批量查询域名的建站时间记录?
jQuery 常见小例汇总
如何在万网开始建站?分步指南解析
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
如何在搬瓦工VPS快速搭建网站?
javascript中的try catch异常捕获机制用法分析
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
linux top下的 minerd 木马清除方法
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
微信小程序 HTTPS报错整理常见问题及解决方案
Java类加载基本过程详细介绍
如何用PHP快速搭建CMS系统?
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
java获取注册ip实例
javascript中对象的定义、使用以及对象和原型链操作小结
Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】
长沙做网站要多少钱,长沙国安网络怎么样?
如何在宝塔面板中修改默认建站目录?
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
Laravel如何创建自定义中间件?(Middleware代码示例)
如何用wdcp快速搭建高效网站?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
上一篇:C中Clear方法的作用解析
下一篇:爱聊免费聊天如何设置
上一篇:C中Clear方法的作用解析
下一篇:爱聊免费聊天如何设置

