从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

从 Flutter Web 发送邮件

如何在Dart / Flutter中使用Flask Server API将图像作为请求发布?

如何从 Flutter Web 应用程序发送电子邮件?