软件编程
位置:首页>> 软件编程>> java编程>> Java 发送http请求上传文件功能实例

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

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

标签: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<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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com