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参数:

java 复制代码
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参数‌

相关推荐
小bo波1 小时前
使用Thread子类创建线程 VS 使用Runnable接口创建线程的区别
java·多线程·thread·并发编程·runnable
SamDeepThinking2 小时前
高并发场景下,CompletableFuture与ForkJoinPool该如何取舍?
java·后端·面试
Goodbye3 小时前
大模型无状态架构:从 HTTP 协议到 Harness AI 工程的深度解析
http
张不才5 小时前
CPU 100% 了怎么办?Java 性能排障的标准化操作
java·后端
shepherd1116 小时前
吞吐量提升 10 倍:高并发大批量数据处理任务的架构演进与性能调优
java·后端·架构
plainGeekDev9 小时前
单例模式 → object 声明
android·java·kotlin
用户2986985301410 小时前
Java 实现 Word 文档文本与图片提取的方法
java·后端
SimonKing10 小时前
铁子,IntelliJ IDEA 2026.1.3来了,升不升?
java·后端·程序员
咖啡八杯21 小时前
GoF设计模式——策略模式
java·后端·spring·设计模式