gpt4 book ai didi

json - 以 Map 作为正文的 Dart HTTP POST

转载 作者:IT王子 更新时间:2023-10-29 07:12:32 24 4
gpt4 key购买 nike

Dart http packagepost方法只接受 String , 一个 List<int>Map<String, String>作为请求正文。我需要使用 Content-Type header application/json 发送此类的对象作为正文:

class CreateListingRequest {
String title;
List<ListingImage> images;
List<int> categoryIds;
}

哪里ListingImage

class ListingImage {
String url;
int position;
}

在 Postman 中,我会将正文构建为带有 Content-Type header 的原始 json application/json像这样:

{
"title": "Testing transaction force fail",
"listing_images": [
{
"url": "https://picsum.photos/500/500/?image=336",
"position": 0
},
{
"url": "https://picsum.photos/500/500/?image=68",
"position": 1
},
{
"url": "https://picsum.photos/500/500/?image=175",
"position": 2
}
],
"category_ids": [19, 26]
}

在我看来,如果我可以发送 Map<String, dynamic>那会解决问题,但我只能发送 Map<String, String> .

请帮忙。

最佳答案

使用 String encoded = json.encode(theMap);然后发布encoded .如果您需要特定的字符编码(例如 utf-8),则使用 utf8.encode(encoded) 进一步对字符串进行编码并发布生成的字节数组。 (第二步对于 utf-8 应该是不必要的,因为我认为这是默认设置。)

值得考虑这 3 个变体的作用:

  • List<int> - 发送一个不透明的字节数组
  • String编码使用字符编码将字符串转换为字节 - 并发送字节数组
  • Map<String, String> - 对 x-www-form-urlencoded 中的字符串键/值对进行编码并发送。

如果你想发送更复杂的数据,那么你需要将它转换成上述之一(并且服务器需要知道如何解码它)。那就是 content-type 的地方标题很有用。最终,服务器接收到一个字节数组并将其转换回例如一个字符串,或一些 json,或一组表单字段,或一张图像。它知道如何根据 header 和任何指定的编码来执行此操作。

关于json - 以 Map<String, dynamic> 作为正文的 Dart HTTP POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com