废话不多说了,直接给大家贴代码了,具体代码如下所示:

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请求上传文件功能实例相关推荐

  1. java httpget 传参数_Java 发送http请求(get、post)

    1.情景展示 java发送get请求.post请求(form表单.json数据)至另一服务器: 可设置HTTP请求头部信息,可以接收服务器返回cookie信息,可以上传文件等: 2.代码实现 所需ja ...

  2. java 模拟post上传文件_Java模拟post请求上传文件

    Java代码实现 /** * 模拟文件post上传 * @param urlStr(接口地址) * @param formName(接口file接收名) * @param fileName(需要上传文 ...

  3. java发送post请求上传文件和json数据

    java发送post请求上传文件和json数据 因为第三方的上传服务post参数使用了两个@requestpart参数. 但是feign不可以使用两个@requestpart参数.会报错:java.l ...

  4. java断点上传下载_java实现多线程断点续传,上传下载 分享

    程序采用的ftp工具, apache 的 commons-net-ftp-ftpclient package com.ftp; import java.io.File; import java.io. ...

  5. RestTemplate发送form-data请求上传rul资源文件及对象参数

    需求 上传文件服务中的文件到其他平台 接口描述:用于上传工程日志相关资料 请求url:/cq-szh-projectdocumentscomputesvc/api/service/addEnginee ...

  6. 多线程处理大文件_Java内存映射,上G大文件轻松处理

    ☞ 免费CSDN资料帮下服务 | 免费加群 ☜ 内存映射文件(Memory-mapped File),指的是将一段虚拟内存逐字节映射于一个文件,使得应用程序处理文件如同访问主内存(但在真正使用到这些数 ...

  7. java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解

    java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...

  8. java解压两层zip文件_Java解压缩zip - 解压缩多个文件或文件夹实例

    java解压缩zip - 多个文件(包括文件夹),具体如下: 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压. 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参 ...

  9. php post 文件,PHP响应post请求上传文件的方法_php技巧

    本文实例讲述了PHP响应post请求上传文件的方法.分享给大家供大家参考,具体如下: function send_file($url, $post = '', $file = '') { $eol = ...

最新文章

  1. 对于HTML表单输入字段,disabled =“ disabled”和readonly =“ readonly”有什么区别?
  2. put the eye care sticker on the neck is relief
  3. 多元化和专一化的关系
  4. MM32看门狗学习(兼容STM32)
  5. C++基础::字符串流(stringstream)
  6. jdbc增删改查_JDBC和MyBaits之争,Debug告诉你谁更胜一筹
  7. 兄弟连BroPHP系列教程
  8. 速达5000进销存PDA条码打印扫码开单-吉度PDA定制
  9. 分享几点在UG中常用的快捷键!
  10. 《淘宝技术这十年》读书笔记
  11. RGB与十六进制颜色进行互转
  12. telnet远程登录服务器端口,Telnet服务器远程登录过程
  13. html手机截屏保存不了,华为手机截屏图像保存不了怎么处理?
  14. MATLAB读取10bit的raw格式图片代码
  15. VBox虚拟机在注册过程中可能报的错(一条龙服务) 打开虚拟文件失败、relaunching VirtualBox VM process 5 (Solved)等等
  16. 安卓利用谷歌文字转语音引擎实现离线文字播报语音
  17. java isreachable_java-奇数InetAddress.isReachable()问题
  18. vue构建pc端项目(ElementUI)、vue入门小应用
  19. 谈谈未来 APP 产品设计的革命性趋势
  20. 工作五年,一年内我靠这系列java面试宝典从13K到大厂30K

热门文章

  1. 基于卷积神经网络的人脸认证(判断两个人脸是否是一个人)
  2. 树莓派制作“数码显微镜”,了解一下?
  3. Secure保存串口数据到本地
  4. Repository模式与UnitOfWorks模式的运用
  5. Android自定义View之仿QQ侧滑菜单实现
  6. IOS贝塞尔曲线圆形进度条和加载动画
  7. Solr 5.4.0
  8. C++存储和处理字符串
  9. Linux 内核抓包功能实现基础(五) 常见问题解析
  10. java feature get_Java ShapeFeature.getLocations方法代码示例