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

相关推荐
weixin_419658312 分钟前
CANoe 使用指南:从输出窗口到数据回放的完整实战教程
开发语言·功能测试·车载系统·自动化·汽车
当青春邂逅吉米多维奇4 分钟前
C#图解教程(第5版) 同步方法
开发语言·c#
骇客野人11 分钟前
Java BIO / NIO / AIO 完整详解 + 编程技巧
java·开发语言·nio
霸道流氓气质14 分钟前
OpenTelemetry 入门与实战:Java Agent、Spring Boot Starter与LLM调用追踪示例
java·开发语言·spring boot
波力海苔夹心脆67519 分钟前
C# 机器视觉实战:单相机引导机械手精准贴合,从拍照、偏差计算(平移+旋转)到坐标补偿全解
开发语言·经验分享·数码相机·c#·视觉检测·.net
m0_5873830020 分钟前
24 小时自助健身房系统软件开发实战指南与案例解析
java·spring boot·spring·系统架构·需求分析
栖凤26 分钟前
Java 的 try-catch 在 Agent 里失效了,我用了 5 个模式才兜住
java·前端·python
小师兄吃牛肉26 分钟前
Java 同步系列之 ZooKeeper 分布式锁
java·分布式·java-zookeeper
外收内放37 分钟前
Python基础语法练习题(62原始版本及其优化版本)
开发语言·python
马剑威(威哥爱编程)39 分钟前
【AI全栈后端12-12】Spring Boot 3.x 到 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0
java·开发语言·spring boot·后端