You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Content-Type为x-www-form-urlencoded时如何正确发送请求数据?

正确实现方案

错误原因

  • 手动拼接x-www-form-urlencoded格式的请求体没有做URL编码,参数中如果包含中文、特殊符号(&/=/空格等)会导致服务端解析参数失败
  • 嵌套结构的字段值你用反引号直接拼接的格式不符合要求,若接口要求该类字段为JSON结构,需要先序列化为标准JSON字符串
  • Dart的http库原生支持该格式请求,无需手动拼接字符串,传Map类型的body会自动完成编码、拼接操作,还会自动添加正确的Content-Type请求头

实现代码

首先确保你已经导入了所需依赖:

import 'dart:convert';
import 'package:http/http.dart' as http;

具体请求代码:

// 生成各语言对应的JSON格式字符串
final krDesc = jsonEncode({"title": titleKr, "context": contextKr});
final enDesc = jsonEncode({"title": titleEn, "context": contextEn});
final jpDesc = jsonEncode({"title": titleJp, "context": contextJp});
final chDesc = jsonEncode({"title": titleCh, "context": contextCh});

// 构造表单参数Map
final params = <String, String>{
  "des": div,
  "kr_desc": krDesc,
  "en_desc": enDesc,
  "jp_desc": jpDesc,
  "ch_desc": chDesc,
};

// 发起请求
final response = await http.post(
  Uri.parse(url),
  body: params,
);

注意事项

如果接口要求嵌套字段不是JSON格式,只需调整对应desc字段的生成逻辑即可,只要保证存入params的是字符串类型,http库都会自动完成URL编码处理,不会出现参数解析错误的问题。

内容的提问来源于stack exchange,提问作者sojinLee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:09:03