HTTP 请求未在响应中执行 - Flutter/Dart

Posted

技术标签:

【中文标题】HTTP 请求未在响应中执行 - Flutter/Dart【英文标题】:The HTTP request is not being executed in response - 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。测试中写的基本相同,并且可以正常工作。你说我认为请求中有一个错误。 这是一个请求,你说的是两个? 【参考方案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 但不起作用。

以上是关于HTTP 请求未在响应中执行 - Flutter/Dart的主要内容,如果未能解决你的问题,请参考以下文章

HTTP响应状态码

HTTP响应状态码

Flutter Web Http 请求奇怪的响应

Dart/Flutter POST 请求和流响应

Flutter 代码未在 android 模拟器上执行

如何在 Flutter 中解码 Gzip Http 响应?