从flutter web发送api时,如果body中输入了复杂的格式
Posted
技术标签:
【中文标题】从flutter web发送api时,如果body中输入了复杂的格式【英文标题】:When sending an api from flutter web, if a complex format is entered in the body 【发布时间】:2021-10-23 00:49:14 【问题描述】:
"title":
"kr":"kr_title",
"en":"en_title",
"jp":"jp_title",
"ch":"ch_title"
,
"content":
"kr":"kr_content",
"en":"en_content",
"jp":"jp_content",
"ch":"ch_content"
正文必须包含这些代码。 然后我在api的正文中写了下面的代码。 (kr_title、en_title 等作为参数作为 String 接收。)
var response = await http.post(Uri.parse(url),
headers:
"Content-Type":"application/x-www-form-urlencoded",
,
body:
"title":
"kr": kr_title,
"en": en_title,
"jp": jp_title,
"ch": ch_title
,
"content":
"kr": kr_content,
"en": en_content,
"jp": jp_content,
"ch": ch_content
);
之后我发现了这个错误
Expected a value of type 'String', but got one of type 'IdentityMap<String, String>'
我不确定在这种情况下该怎么做。这样的格式不应该包含在正文中吗?
【问题讨论】:
【参考方案1】:您必须对该字符串映射进行编码,然后将其发送。 像这样
var json = jsonEncode(
"title":
"kr":"kr_title",
"en":"en_title",
"jp":"jp_title",
"ch":"ch_title"
,
"content":
"kr":"kr_content",
"en":"en_content",
"jp":"jp_content",
"ch":"ch_content"
);
var response = await http.post(Uri.parse(url),
headers:
"Content-Type":"application/x-www-form-urlencoded",
,
body: json
);
【讨论】:
那么我可以在正文中编写这段代码吗?像这样? var response = await http.post(Uri.parse(url), headers: "Content-Type":"application/x-www-form-urlencoded", , body: json ); @sojinLee 是的,我会更新我的答案以上是关于从flutter web发送api时,如果body中输入了复杂的格式的主要内容,如果未能解决你的问题,请参考以下文章
Flutter Web - 如何选择 PDF 文件并 POST 到 API?
Map in Flutter for Web - 将数据从 JS 发送到 Flutter for Web
使用 MultipartFile 将 XFile 图像发送到 API - Flutter