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
");
sbFormData.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"\r
\r
");
sbFormData.append(entry.getValue() + "\r
");
}
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
").getBytes(requestEncoding));
out.write(("Content-Disposition: form-data; name=\"" + fileName + "\"; filename=\"" + file.getName() + "\"\r
").getBytes(requestEncoding));
out.write(("Content-Type: application/x-msdownload\r
\r
").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
").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を送信してファイルのアップロードを要求しています。皆さんに助けてほしいです。ここでも私たちのサイトを応援してくれてありがとうございます。