Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在http POST请求正文中发送数组_Flutter_Dart_Http Post - Fatal编程技术网

Flutter 如何在http POST请求正文中发送数组

Flutter 如何在http POST请求正文中发送数组,flutter,dart,http-post,Flutter,Dart,Http Post,我有一个要添加到购物车的对象数组,我必须在POST请求中将其作为body参数发送,如下所示: [ {"value":74,"key":"product_attribute_53_12_25"}, {"value":3,"key":"product_attribute_1_6_2"}, {"value":6,"key"

我有一个要添加到购物车的对象数组,我必须在POST请求中将其作为body参数发送,如下所示:

[
    {"value":74,"key":"product_attribute_53_12_25"},
    {"value":3,"key":"product_attribute_1_6_2"},
    {"value":6,"key":"product_attribute_1_3_3"},
    {"value":8,"key":"product_attribute_1_4_4"},
    {"value":10,"key":"product_attribute_1_8_5"},
    {"value":5,"key":"addtocart_53.EnteredQuantity"}
]
这是我的服务:

Future<AddToCartModelResponse> addToCartService() async {
  AddToCartModelResponse model = AddToCartModelResponse();
  Uri uri = Uri.parse(Constants.baseUrl + "AddProductToCart/53/1");
  Map<String, String> header = {
    "NST": Constants.NST,
    "Content-Type": "application/json",
  };
  var body = {
    //???????????
  };
  try {
    var response = await http.post(uri, body: body, headers: header);
    print(response.body);
    if (response.statusCode == 200) {
      model = AddToCartModelResponse.fromJson(json.decode(response.body));
      return model;
    } else {
      model = AddToCartModelResponse.fromJson(json.decode(response.body));
      model.statusCode = response.statusCode;
      return model;
    }
  } on TimeoutException catch (error, stack) {
    print('error time');
    model.statusCode = 500;
    return model;
  } catch (error, stack) {
    print(error);
    model.statusCode = 500;
    return model;
  }
}
Future addToCartService()异步{
AddToCartModelResponse模型=AddToCartModelResponse();
Uri=Uri.parse(Constants.baseUrl+“AddProductToCart/53/1”);
映射头={
“NST”:Constants.NST,
“内容类型”:“应用程序/json”,
};
变量体={
//???????????
};
试一试{
var response=wait http.post(uri,body:body,headers:header);
打印(响应.正文);
如果(response.statusCode==200){
model=AddToCartModelResponse.fromJson(json.decode(response.body));
收益模型;
}否则{
model=AddToCartModelResponse.fromJson(json.decode(response.body));
model.statusCode=response.statusCode;
收益模型;
}
}on TimeoutException捕获(错误,堆栈){
打印(“错误时间”);
model.statusCode=500;
收益模型;
}捕获(错误,堆栈){
打印(错误);
model.statusCode=500;
收益模型;
}
}
这里,带有参数的uri集以及我的主体参数来自productDetail,如下所示:

[
    {"value":74,"key":"product_attribute_53_12_25"},
    {"value":3,"key":"product_attribute_1_6_2"},
    {"value":6,"key":"product_attribute_1_3_3"},
    {"value":8,"key":"product_attribute_1_4_4"},
    {"value":10,"key":"product_attribute_1_8_5"},
    {"value":5,"key":"addtocart_53.EnteredQuantity"}
]
[{“key”:“product_attribute{productId}{attributeId}{Id}”,“value”:{attrValueId},
{“value”:{quantity},“key”:“addtocart{productId}.EnteredQuantity”}
]

主体可以是
地图
列表

Future addToCartService()异步{
AddToCartModelResponse模型=AddToCartModelResponse();
Uri=Uri.parse(Constants.baseUrl+“AddProductToCart/53/1”);
映射头={
“NST”:Constants.NST,
“内容类型”:“应用程序/json”,
};
变量体=[
{“value”:74,“key”:“product_attribute_53_12_25”},
{“value”:3,“key”:“product_attribute_1_6_2”},
{“value”:6,“key”:“product_attribute_1_3_3”},
{“value”:8,“key”:“product_attribute_1_4_4”},
{“value”:10,“key”:“product_attribute_1_8_5”},
{“值”:5,“键”:“addtocart_53.EnteredQuantity”}
];
试一试{
var response=wait http.post(uri,body:body,headers:header);
打印(响应.正文);
如果(response.statusCode==200){
model=AddToCartModelResponse.fromJson(json.decode(response.body));
收益模型;
}否则{
model=AddToCartModelResponse.fromJson(json.decode(response.body));
model.statusCode=response.statusCode;
收益模型;
}
}on TimeoutException捕获(错误,堆栈){
打印(“错误时间”);
model.statusCode=500;
收益模型;
}捕获(错误,堆栈){
打印(错误);
model.statusCode=500;
收益模型;
}
}
或者,如果您从模特身上取下身体:


班车{
列出产品清单;
列表toJson(){
return products.map((p)=>p.toJson()).toList();
}
}
/*...*/
未来addToCartService(购物车)异步{
/*...*/
var body=cart.toJson();
/*...*/
}

您为什么要手工操作?这个后端是否没有某种描述,比如一个招摇过市的文件?也许是时候告诉后端的家伙们升级他们的游戏并提供一个。我们有一个邮递员收藏。但是我该怎么写这篇文章呢?请告诉我另一种方式,我的意思是,任何专业的REST API都会有一个接口描述文件,如swagger或OpenAPI(),您将生成此代码,而不是为每个函数手工编写。第一种方式有效,当我在POST请求中添加JSONECODE(body)时