Java 发送http请求上传文件功能实例

作者:阿文丶 时间:2021-07-04 22:30:53 

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


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请求上传文件功能实例网站的支持!

来源:http://blog.csdn.net/xiaose_307/article/details/72887285

标签:java,http,请求
0
投稿

猜你喜欢

  • Android利用手势完成屏幕密码锁功能

    2023-04-08 21:21:40
  • Java Bean 作用域及它的几种类型介绍

    2022-12-02 20:39:42
  • C#实现显示CPU使用率与内存使用率

    2022-09-26 15:03:58
  • 总结Java的Struts框架的异常处理方法

    2022-04-12 01:29:44
  • Android第三方控件PhotoView使用方法详解

    2021-12-07 20:35:48
  • 详解备忘录模式及其在Java设计模式编程中的实现

    2023-08-24 22:34:02
  • 如何在Spring Boot应用中优雅的使用Date和LocalDateTime的教程详解

    2023-03-14 04:54:11
  • C#中List<T>存放元素的工作机制

    2022-09-29 16:31:23
  • Android网络开发中GET与POST请求详解

    2022-05-28 23:23:53
  • C#实现伪装文件夹功能

    2023-04-28 14:21:38
  • 浅析Java中JSONObject和JSONArray使用

    2022-06-05 14:58:30
  • C#实现上传下载图片

    2022-12-15 22:48:22
  • 简单实现Android应用的启动页

    2022-04-15 14:23:45
  • Android仿开心消消乐大树星星无限循环效果

    2021-10-04 07:19:06
  • 浅析Spring工厂的反射和配置文件

    2023-06-22 20:52:23
  • Kotlin 封装万能SharedPreferences存取任何类型详解

    2021-11-16 06:16:46
  • spring cloud oauth2 feign 遇到的坑及解决

    2022-06-15 13:06:06
  • Android中判断网络是否可用的代码分享

    2022-01-03 23:59:46
  • SpringBoot如何优雅地处理全局异常详解

    2023-01-06 04:30:19
  • Android自定义ViewPager实例

    2023-03-11 10:24:50
  • asp之家 软件编程 m.aspxhome.com