参数:
/**
* 模拟发送form-data的请求
*
* @param params 请求参数
* @return 返回结果
*/
public static String formDataRequestExample(Map<String, Object> params) throws IOException {
// 请求URL
String requestUrl = String.valueOf(params.get("url"));
// 构建请求参数
String boundary = "---------------------------" + System.currentTimeMillis();
String lineEnd = "\r\n";
String twoHyphens = "--";
String formDataTemplate = twoHyphens + boundary + lineEnd +
"Content-Disposition: form-data; name=\"%s\"" + lineEnd +
lineEnd +
"%s" + lineEnd;
// 构建请求体
String requestBody = "";
//表单中参数
for (Map.Entry<String, Object> entry : params.entrySet()) {
if (!entry.getKey().equals("url")) {
requestBody = requestBody + String.format(formDataTemplate, entry.getKey(), new Gson().toJson(entry.getValue()));
}
}
String formData5 = String.format(formDataTemplate, "url", params.get("url"));
// 构建请求体
requestBody = requestBody + formData5;
// 创建连接
URL url = new URL(requestUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置请求方法为POST
connection.setRequestMethod("POST");
// 设置请求头
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
// 允许输入输出流
connection.setDoInput(true);
connection.setDoOutput(true);
// 获取输出流
OutputStream outputStream = connection.getOutputStream();
PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream, "UTF-8"), true);
// 发送请求体
writer.append(requestBody);
writer.flush();
writer.close();
// 获取响应
int responseCode = connection.getResponseCode();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
// 断开连接
connection.disconnect();
return response.toString();
}