如何更改 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、ios、android、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 请求