这里有新鲜出炉的 Java 并发编程示例,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
本文通过实例代码给大家介绍了 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 请求上传文件功能实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 PHPERZ 网站的支持!
来源: http://www.phperz.com/article/17/0828/338387.html