当前位置: 首页 > 知识库问答 >
问题:

使用http时获取statuscode=400。从本地ip地址上的dart/FLIFT获取

熊烨
2023-03-14

我想向本地网络中设备上运行的RestApi发出get请求,以检索设备生成的JSON数据。

RestApi正确响应来自网络中每个其他设备的浏览器调用。但是,当我试图通过dart的http访问数据时,Bash的curl也可以工作。get程序无法检索JSON数据-我得到的是状态码400。

  • 修改URL以确保其正确写入,

在flutter应用程序中,我可以很容易地通过http.get连接到Firebase上存储的数据,但是调用本地网络中的设备会导致上述场景。

import 'package:dart_http/dart_http.dart' as dart_http;
import 'package:http/http.dart' as http;
import 'dart:io';
import 'dart:convert';

main(List<String> arguments) async {

  var url = 'http://192.168.0.5/api/device/state';

  http.Response response1 =
      await http.get(url, headers: {"content": "application/json"});
  print('Response status: ${response1.statusCode}');
  print('Response body: ${response1.body}');
  print('Response body: ${response1.headers}');
  print('Response body: ${response1.reasonPhrase}');
  print('Response body: ${response1.request}');

  HttpClient()
      .getUrl(Uri.parse(
          'http://192.168.0.5/api/device/state/')) // produces a request object
      .then((request) => request.close()) // sends the request
      .then((response) {
    print(response);
    response.transform(Utf8Decoder()).listen(print);
  }); // transforms and prints the response
}
 Future<Map<String, String>> getAirSensorStatus() async {
    print("Getting Air Sensor");
http.Response response =
        await http.get('http://192.168.0.5/api/device/state');
        print(response);
        print("Status code  " + "${response.statusCode}");

    try {
      if (response.statusCode != 200 && response.statusCode != 201) {
        print("Something went wrong. Status not 200 and not 201 for AirSensor");
        return null;
      }
      final responseData = json.decode(response.body);

      return responseData;
    } catch (error) {
      print(error);
      return null;
    }
  }

我希望在响应中获得状态码200和JSON数据。相反,只创建响应对象,不建立连接。

你能帮我弄清楚为什么吗?

https://technical.blebox.eu/

共有1个答案

董联
2023-03-14

该问题可能是由于客户端无法根据请求访问本地服务器造成的。HTTP错误400被标记为“错误请求”和“没有到主机的路由,errno=113”,通常由网络错误引起。解决此问题的常见方法是确保客户端与本地服务器位于同一网络上。

 类似资料:
  • 我希望在连接到wifi网络时,在运行我的应用程序的手机上获取用户的本地IPv4地址。使用以下代码: 我可以得到一些接近IPv4地址的信息,但与命令行中的IPv4地址相比,它并不完全相同。有更好的办法吗?我知道formatIpAddress已被弃用,但在我找到获取IPv4地址的方法之前,我暂时不太担心这个问题。 编辑: 我发现手机wifi设置中的ip地址是我在使用建议的解决方案获取ip地址时得到的。

  • 问题内容: 我的机器上运行了一个简单的node.js程序,我想获取运行该程序的PC的本地IP地址。如何使用node.js获得它? 问题答案:

  • 问题内容: 如何从C代码获取Linux上接口的IPv4地址? 例如,我想获取分配给eth0的IP地址(如果有)。 问题答案: 尝试这个: 代码示例是从这里获取的。

  • 问题内容: 我正在尝试使用Java获取我的Internet IP地址,但是当我的IP地址为192.168.0.xxx时,我一直在获取本地地址(即:127.0.0.1) 我正在使用该行: 这似乎是获取IP地址的标准方法,但这不是我想要的。每个教程都说要使用此行,所以我有些困惑。 有人可以让我知道如何获取正确的IP地址吗? 我在连接到WiFi的设备上运行,但未使用任何电缆。我正在使用ifconfig

  • 问题内容: 我想获取计算机的IP地址。我使用了下面的代码,但是返回了。 我想获取IP地址(例如),而不是回送地址。 问题答案: 您需要遍历所有网络接口 播放(取自util / helper.go)

  • 问题内容: 我不是指 127.0.0.1 而是其他计算机将用来访问该计算机的计算机,例如 192.168.1.6 问题答案: http://nodejs.org/api/os.html#os_os_networkinterfaces