HTTP 请求未响应 - Flutter/Dart

3

我正在尝试向一个用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中它不起作用。


负载。当我发送一个数组produtos时,它可以完美地工作。如果我发送两个或更多,则catchError()或then()将无法工作。 - GeekSilva
我也这么认为。你能告诉我在哪里吗? - GeekSilva
但这是代码片段。基本上与测试中编写的相同,它可以工作。你说有一个错误,我以为是在请求中。 - GeekSilva
这是一个请求,你在谈论两个吗? - pskink
我在谈论有效载荷。关于数组中的项目。 - GeekSilva
显示剩余2条评论
2个回答

0
如果这只发生在调用本地主机上的服务时: 将您的URL从http://localhost:8080/bla更改为http://10.0.2.2:8080/bla
问题在于您的模拟器不理解localhost,就像您的计算机的localhost一样,因此要访问它,您需要切换到10.0.2.2。

0

从你分享的代码中很难看出来。如果可以,请分享调用此函数的代码。不过你也可以尝试将主体分配给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}');
}

谢谢!但是不起作用!后端正常运行请求(请求发送完美)。问题在于我无法获得响应。 - GeekSilva
我已经编辑了我的答案,你可以在你的请求执行后调用你的结果。 - Manmohan Talwar
是的,我看到了。问题仍然存在。我也使用了await,但不起作用。 - GeekSilva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接