【问题标题】:fetch data from an API with the use of ID in flutter在 Flutter 中使用 ID 从 API 获取数据
【发布时间】:2020-09-10 01:01:11
【问题描述】:

我在处理送货员应用程序,我需要从 API 中获取送货员帐户收到的订单的详细信息。

这是一个例子:

{
    "Status": "1",
    "Order": {
        "deliveryCost": "5.000",
        "amount": "38.400",
        "total": "43,400",
        "hors_remise": "34.560",
        "Dishes": [
            {
                "cartID": "00000",
                "dishID": "13548",
                "dimensionID": 0,
                "title": "Classic 16 pieces trays:",
                "ingredient": "10 piece trays + 2 gunkan + 4 shrimp crunchy",
                "price": "38.400",
                "quantity": "1",
                "imagePath": "https://www.monresto.net/test/plats/P_170121112803.jpg",
                "Options": []
            }
        ],

要访问所有这些信息,我必须指定我在邮局上的“KEY”

我的问题是如何添加 (orderID)?

这是我的代码:

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

class datePageClass extends StatefulWidget {
  @override
  _datePageClassState createState() => _datePageClassState();
}

class _datePageClassState extends State<datePageClass> {

  void getData() async {
    http.Response response = await http.post(
        'https://api/ws/v3/Delivery/orderDetails.php');

    if (respo
nse.statusCode == 200) {
      String data = response.body;

      var cmddetails = jsonDecode(data);
      print(cmddetails);
    } else {
      print(response.statusCode);
    }

    print('');
  }

  @override
  Widget build(BuildContext context) {
    getData();
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.lightBlue,
      ),
    );
  }
}

【问题讨论】:

标签: flutter dart


【解决方案1】:

你试过了吗?

var response = await http.post('https://www.apiurl.com/ws/v2/details.php',  body: {'OrderID': 1209, 'OtherParam': 'value'});

然后在 PHP 中

$OrderID = $_POST["OrderID"];
$OtherParam = $_POST["OtherParam"];

确保清理变量以避免SQL Injections

然后您可以将 JSON 发送回 dart/flutter。

【讨论】:

  • @oussamaayadi 是的。如果我的解决方案对您有帮助,请采纳为正确答案,以便我的解决方案对其他人有所帮助。
  • 如何通过一个必需参数获取请求 api 来做到这一点?
【解决方案2】:

预检查:您确定此 URL 需要 http-POST 而不是 http-GET?

您想在请求中添加orderID,对吗?
如果是这种情况,首先您需要确定 API 是否需要将此参数作为查询参数或正文的一部分。

不过,这里是两种情况的示例。

String orderDetailsUrl = 'https://www.monresto.net/ws/v3/Delivery/orderDetails.php';

  1. orderID 作为查询参数:
orderDetailsUrl += "?orderID=FIXME_ORDER_ID";  
http.Response response = await http.post(orderDetailsUrl);

  1. orderID 作为请求正文的一部分:
Map<String, dynamic> data = Map()
      ..putIfAbsent("orderID", () => "FIXME_ORDER_ID")
var body = jsonEncode(data);
http.Response response = await http.post(orderDetailsUrl, headers: {"Content-Type": "application/json"}, body: body);

【讨论】:

  • @orage thx 为解决方案,你能知道只是改变网址,因为我不能删除这个问题 -
  • @beerstorm 可以将其用于查询参数 - var _response = await _employeeModel.getEmployeeIfscDetail(jsonEncode({APIKey.IFSC: ifsc}),token);
猜你喜欢
  • 2021-02-03
  • 2020-08-17
  • 2021-07-20
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 2020-06-04
  • 2019-09-04
相关资源
最近更新 更多