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