【问题标题】:How to change port of Dart HTTP request?如何更改 Dart HTTP 请求的端口?
【发布时间】:2021-04-20 00:00:41
【问题描述】:

我正在编写一个 Flutter 应用程序,其中涉及从 HTTP 服务器获取一些数据。这是我的代码:

// the local IP of my testing server
final String SERVER = 'http://192.168.1.13:5000';

class Database {
  Future<String> _getJob(int jobID) async {
    var response = http.get('$SERVER?jobID=$jobID');
    return response.body;
  }
}

目前这是输出:

[错误:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常: SocketException:操作系统错误:连接被拒绝,errno = 111,地址 = 192.168.1.13,端口 = 41966

很明显,这是因为端口 41966 上没有任何内容,但请求不应该发送到该端口,而应该发送到端口 5000。是否有其他指定端口的方法?

(我的异步代码可能不是很好,一旦我弄清楚了,我会继续努力)

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    请指定您使用的平台(Web、iOS、Android、Windows、Linux、mac、Flutter 很棒?)。这可能是因为 Android/iOS 不允许 HTTP 连接,因为它们可以被同一网络上的其他人读取。您需要使用 HTTPS。

    我认为对于调试来说,如果你只调用一个已经存在的 API 会更好。从这里选择一个:https://apilist.fun/ 然后在将来,您可以弄清楚如何获得分配给您的服务器的 TLS/SSL 证书(例如使用 LetsEncrypt)

    或者,您可以进入应用程序的配置(特定于平台的配置)以允许不安全的连接 (HTTP)。例如,AndroidiOS。但是,Android 和 iOS 会默认这样做以确保您考虑安全性,而不仅仅是以纯文本形式发送数据。

    注意:实际上并不是因为服务器不存在或端口错误。如果服务器不存在,它会说连接超时或服务器无法访问。在您的情况下,您的操作系统/平台会立即告诉您OS Error: Connection refused,因为它可以看到您正在使用 HTTP。

    【讨论】:

      猜你喜欢
      • 2013-11-08
      • 2021-03-31
      • 2015-03-15
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多