HttpURLConnection 发送formdata 并设置参数
时间: 2023-05-12 11:07:19 浏览: 85
可以使用如下代码发送formdata并设置参数:
```
URL url = new URL("http://example.com/form");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
String boundary = "---------------------------" + System.currentTimeMillis();
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
OutputStream out = conn.getOutputStream();
PrintWriter writer = new PrintWriter(new OutputStreamWriter(out, "UTF-8"), true);
// 添加参数
writer.append("--" + boundary).append("\r\n");
writer.append("Content-Disposition: form-data; name=\"param1\"").append("\r\n");
writer.append("\r\n");
writer.append("value1").append("\r\n");
// 添加文件
writer.append("--" + boundary).append("\r\n");
writer.append("Content-Disposition: form-data; name=\"file\"; filename=\"file.txt\"").append("\r\n");
writer.append("Content-Type: text/plain; charset=UTF-8").append("\r\n");
writer.append("\r\n");
File file = new File("file.txt");
FileInputStream fileInputStream = new FileInputStream(file);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
out.flush();
fileInputStream.close();
// 结束标志
writer.append("\r\n").append("--" + boundary + "--").append("\r\n");
writer.close();
// 获取响应
int responseCode = conn.getResponseCode();
InputStream inputStream = responseCode == HttpURLConnection.HTTP_OK ? conn.getInputStream() : conn.getErrorStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
conn.disconnect();
System.out.println(response.toString());
```
这段代码可以发送一个包含参数和文件的formdata请求,并获取响应。