如何更改 Dart HTTP 请求的端口?

Posted

技术标签:

【中文标题】如何更改 Dart HTTP 请求的端口?【英文标题】:How to change port of Dart HTTP request? 【发布时间】: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。是否有其他指定端口的方法?

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

以上是关于如何更改 Dart HTTP 请求的端口?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 HTTP 请求(Flutter/Dart)检查 Internet 连接?

如何在 Flutter/Dart 中使用 url 编码的标头和正文发出 HTTP POST 请求

Dart Uri Api - 请求通过将 HTML 代码提供给问号来更改链接

如何在 Dart 中为 MultiPart 请求设置超时?

如何在颤振集成测试中模拟 http 请求?

Dart的HTTP请求和响应