java http body的格式 application/x-www-form-urlencoded不支持文件上传
在Java中,HTTP请求的body部分可以包含多种格式的数据,主要包括以下几种:
application/x-www-form-urlencoded:这种格式将数据编码成键值对的形式,键和值都进行了URL编码,键值对之间用&符号连接。例如:name=John&age=30。这种格式通常用于表单数据的提交,但不支持文件传输12。
multipart/form-data:这种格式主要用于上传文件。它将表单数据处理成一条消息,以标签为单元,用分隔符分开。当上传的字段是文件时,会有Content-Type来说明文件类型。例如:Content-Disposition: form-data; name="file"; filename="example.txt"12。
application/json:这种格式用于传输JSON数据。在HTTP请求的body中,可以通过设置Content-Type为application/json来指定使用JSON格式。例如:{"name": "John", "age": 30}。这种格式常用于API调用,因为它支持复杂的数据结构12。
raw:这种格式允许用户选择文本类型,如text/plain、application/javascript、application/xml等。例如,选择text/plain时,body中的内容就是纯文本1。
binary:这种格式通常用于上传二进制数据,如图片、音频等。它没有键值对,一次只能上传一个文件1。
示例代码
以下是一个使用Java进行HTTP POST请求的示例,其中包含JSON格式的body参数:
import java.net.HttpURLConnection;
import java.net.URL;
public static String httpPost(String serverURL, String params) {
HttpURLConnection connection = null;
try {
URL url = new URL(serverURL);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json;charset=\"UTF-8\"");
connection.setDoOutput(true);
connection.connect();
try (OutputStream os = connection.getOutputStream()) {
byte[] outputBytes = params.getBytes("utf-8");
os.write(outputBytes);
os.flush();
}
InputStream is = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
return response.toString();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
}
return null;
}
这段代码展示了如何使用Java进行HTTP POST请求,并发送JSON格式的body参数