java 转发上传文件_Java 发送http请求上传文件功能实例
废话不多说了,直接给大家贴代码了,具体代码如下所示:
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 requestHeader, String responseEncoding) {
String result = "";
BufferedReader reader = null;
try {
if (requestUrl == null || requestUrl.isEmpty()) {
return ruDkawiLesult;
}
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 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 requestHeader, Map formTexts, Map 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 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 entry : requestHeader.entrySet()) {
connection.setRequestProperty(entry.getKey(), entry.getValue());
}
}
if (files == null || files.size()www.cppcns.com == 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 entry : formTexts.entrySet()) {
formData += entry.getKey() + "=" + entry.getValue() + "&";
}
formData = formData.substring(0, formData.length() - 1);
out.write(formData.toString().getBytes(requestEncoding));
}
} elseuDkawiL {
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编程客栈FormData.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 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请求上传文件功能实例
本文地址: http://www.cppcns.com/ruanjian/java/193112.html
java 转发上传文件_Java 发送http请求上传文件功能实例相关推荐
- java httpget 传参数_Java 发送http请求(get、post)
1.情景展示 java发送get请求.post请求(form表单.json数据)至另一服务器: 可设置HTTP请求头部信息,可以接收服务器返回cookie信息,可以上传文件等: 2.代码实现 所需ja ...
- java 模拟post上传文件_Java模拟post请求上传文件
Java代码实现 /** * 模拟文件post上传 * @param urlStr(接口地址) * @param formName(接口file接收名) * @param fileName(需要上传文 ...
- java发送post请求上传文件和json数据
java发送post请求上传文件和json数据 因为第三方的上传服务post参数使用了两个@requestpart参数. 但是feign不可以使用两个@requestpart参数.会报错:java.l ...
- java断点上传下载_java实现多线程断点续传,上传下载 分享
程序采用的ftp工具, apache 的 commons-net-ftp-ftpclient package com.ftp; import java.io.File; import java.io. ...
- RestTemplate发送form-data请求上传rul资源文件及对象参数
需求 上传文件服务中的文件到其他平台 接口描述:用于上传工程日志相关资料 请求url:/cq-szh-projectdocumentscomputesvc/api/service/addEnginee ...
- 多线程处理大文件_Java内存映射,上G大文件轻松处理
☞ 免费CSDN资料帮下服务 | 免费加群 ☜ 内存映射文件(Memory-mapped File),指的是将一段虚拟内存逐字节映射于一个文件,使得应用程序处理文件如同访问主内存(但在真正使用到这些数 ...
- java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解
java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...
- java解压两层zip文件_Java解压缩zip - 解压缩多个文件或文件夹实例
java解压缩zip - 多个文件(包括文件夹),具体如下: 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压. 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参 ...
- php post 文件,PHP响应post请求上传文件的方法_php技巧
本文实例讲述了PHP响应post请求上传文件的方法.分享给大家供大家参考,具体如下: function send_file($url, $post = '', $file = '') { $eol = ...
最新文章
- 对于HTML表单输入字段,disabled =“ disabled”和readonly =“ readonly”有什么区别?
- put the eye care sticker on the neck is relief
- 多元化和专一化的关系
- MM32看门狗学习(兼容STM32)
- C++基础::字符串流(stringstream)
- jdbc增删改查_JDBC和MyBaits之争,Debug告诉你谁更胜一筹
- 兄弟连BroPHP系列教程
- 速达5000进销存PDA条码打印扫码开单-吉度PDA定制
- 分享几点在UG中常用的快捷键!
- 《淘宝技术这十年》读书笔记
- RGB与十六进制颜色进行互转
- telnet远程登录服务器端口,Telnet服务器远程登录过程
- html手机截屏保存不了,华为手机截屏图像保存不了怎么处理?
- MATLAB读取10bit的raw格式图片代码
- VBox虚拟机在注册过程中可能报的错(一条龙服务) 打开虚拟文件失败、relaunching VirtualBox VM process 5 (Solved)等等
- 安卓利用谷歌文字转语音引擎实现离线文字播报语音
- java isreachable_java-奇数InetAddress.isReachable()问题
- vue构建pc端项目(ElementUI)、vue入门小应用
- 谈谈未来 APP 产品设计的革命性趋势
- 工作五年,一年内我靠这系列java面试宝典从13K到大厂30K
热门文章
- 基于卷积神经网络的人脸认证(判断两个人脸是否是一个人)
- 树莓派制作“数码显微镜”,了解一下?
- Secure保存串口数据到本地
- Repository模式与UnitOfWorks模式的运用
- Android自定义View之仿QQ侧滑菜单实现
- IOS贝塞尔曲线圆形进度条和加载动画
- Solr 5.4.0
- C++存储和处理字符串
- Linux 内核抓包功能实现基础(五) 常见问题解析
- java feature get_Java ShapeFeature.getLocations方法代码示例