【问题标题】:The HTTP request is not being executed in response - Flutter/DartHTTP 请求未在响应中执行 - Flutter/Dart
【发布时间】:2020-06-02 09:01:11
【问题描述】:

我正在尝试对用 C# (.NET Core) 编写的 Web API 执行请求。端点运行一个异步函数并返回一个带有操作结果的 JSON。

在 Dart 中我无法得到响应。 then()catchError() 只是不执行。

端点在有效负载中获取产品。当我只发送一个产品时,我可以得到响应,但当我发送两个或更多时,我不能。

有效载荷是:

http .post('http://192.168.0.10:5000/api/v1/oficina/dart',
                  body: jsonEncode({
                    "usuario": "edigleyssonsilva",
                    "senha": "123456",
                    "codEmp": 1,
                    "codFil": 1,
                    "produtos": [
                      {
                        "ccuRes": "160",
                        "codEmp": 1,
                        "codFil": 1,
                        "codPro": "570.0001",
                        "codTns": "90250",
                        "datPrv": "2020-02-17",
                        "datEme": "2020-02-17",
                        "qtdEme": 2
                      }
                    ]
                  }),
                  headers: {'Content-Type': 'application/json'})
              .then((value) => print(value.body))
              .catchError((err) {
                print('Ocorreu um erro');
                print(err);
              });

我已经在 Postman、Angular 应用和用 Dart 编写的测试文件上测试了具有相同有效负载的相同端点,并且效果很好。

所以,我不知道为什么它在 Flutter 中不起作用

【问题讨论】:

  • “但是当ai发送两个或更多时我不能”是什么意思?
  • 有效载荷。当我发送一个数组 produtos 时,它工作得很好。如果我再发送两个 cacthError() 或 then() 不起作用。
  • 我想是的。你能告诉我在哪里吗?
  • 但这是代码 sn-p。测试中写的基本相同,并且可以正常工作。你说我认为请求中有一个错误。
  • 这是一个请求,你说的是两个?

标签: http flutter dart


【解决方案1】:

你分享的代码不是很清楚,要么也分享调用这个函数的代码,但你也可以尝试,将你的身体分配给一个 Map 对象,然后用 json.encode 对其进行编码,因为 jsonEncode 是在新版本中已弃用,尽管它可以工作,但您应该使用新的方式对其进行编码。 此外,您应该在执行任何异步工作时使用 async-await。

Future<void> request() async {

 Map<String, String> headers = {
      'Content-type': 'application/json',
      'Accept': 'application/json',
    };
Map body = {"usuario": "edigleyssonsilva",
                    "senha": "123456",
                    "codEmp": 1,
                    "codFil": 1,
                    "produtos": [
                      {
                        "ccuRes": "160",
                        "codEmp": 1,
                        "codFil": 1,
                        "codPro": "570.0001",
                        "codTns": "90250",
                        "datPrv": "2020-02-17",
                        "datEme": "2020-02-17",
                        "qtdEme": 2
                      }
                    ]};
final response = await http.post(url, 
                body: json.encode(body), 
                headers: headers,
              ).catchError((err) {
                print('Ocorreu um erro');
                print(err);
              });
print('Response: ${response.body}');
}

【讨论】:

  • 谢谢!但不起作用! Tha后端正常运行请求(请求完美发送)。问题是我无法得到响应。
  • 我已经编辑了我的答案,您可以在您的请求执行后调用您的结果。
  • 是的,我看到了。问题仍然存在。我也使用了 await 但不起作用。
猜你喜欢
  • 2019-11-21
  • 1970-01-01
  • 2020-11-21
  • 2020-08-13
  • 2019-07-29
  • 1970-01-01
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多