如果通过应用程序连接到 WIFI,则无法在 Android 上发送 http 请求

Posted

技术标签:

【中文标题】如果通过应用程序连接到 WIFI,则无法在 Android 上发送 http 请求【英文标题】:Can't send http requests on Android if connecting to WIFI through app 【发布时间】:2021-04-18 14:09:00 【问题描述】:

我正在构建一个在 android 9 上运行的应用。

一旦我使用此库wifi_configuration 从我的应用程序连接到 WIFI 网络,我就无法使用 HTTP 库向http://192.168.80.1:4443 发出成功的 HTTP 请求,而是向http://www.google.com 发出成功的 HTTP 请求。我对http://192.168.80.1:4443 的请求挂起并导致以下错误:SocketException: OS Error: Connection timed out, errno = 110, address = 192.168.80.1, port = 55496 图书馆无法毫无问题地连接到网络。

如果我直接从 Android UI 连接到 WIFI,我可以向http://192.168.80.1:4443 发出 HTTP 请求。所以从我的应用程序连接到 WIFI 并调用http://192.168.80.1:4443 时会出现问题。会不会是因为不是域名而是IP地址?

是否有任何权限/限制影响向您的应用连接到的网络发出 HTTP 请求?

var ssid = 'ssid';
var password = 'password';

WifiConnectionStatus connectionStatus = await WifiConfiguration.connectToWifi(ssid, password, "com.appname");

switch (connectionStatus) 
  case WifiConnectionStatus.connected:
    var response = await http.get('http://192.168.80.1:4443/'); // NOT WORKING, the response hangs when connected to the WIFI from the app.
    var response = await http.get('http://www.google.com'); // WORKING
    break;

  case WifiConnectionStatus.alreadyConnected:
    print("alreadyConnected");
    break;

  case WifiConnectionStatus.notConnected:
    print("notConnected"); 
    break;

  case WifiConnectionStatus.platformNotSupported:
    print("platformNotSupported");
    break;

  case WifiConnectionStatus.profileAlreadyInstalled:
    print("profileAlreadyInstalled");
    break;

  case WifiConnectionStatus.locationNotAllowed:
    print("locationNotAllowed");
    break;

【问题讨论】:

【参考方案1】:

Will,我不知道这个包,但我使用this 一个没有问题的包,它可以做你想做的事情,比如连接到 wifi 网络。 还有一个问题,它可能会对您有所帮助,因为有关于发出 HTTP 请求的更新,而出于安全原因,您应该发出 HTTPS 请求,但可以通过 solution

修复它

【讨论】:

以上是关于如果通过应用程序连接到 WIFI,则无法在 Android 上发送 http 请求的主要内容,如果未能解决你的问题,请参考以下文章

强制 Android 应用连接到某个 WiFi 网络

iPhone无法通过WiFi连接到本地HTTP服务器

FusedLocationProviderClient 无法通过 3G 或 4G 网络获取 GPS 位置,除非先连接到 WIFI 网络

我无法通过 WIFI 连接到 WI-FI DIRECT 制作的接入点

如果设备上已连接 WIFI SSID,则检查 wifi 凭据

Galaxy 手表无法连接到 Tizen Studio