【发布时间】:2018-07-22 16:38:31
【问题描述】:
环境
- Android Studio 最新版本
- 运行 Android Nougat 的 Android 模拟器
- MAMP 用作 HTTP 服务器
问题
我的简单方法
Future<String> _getSimpleReply( String command, callback, errorCallback ) async {
try {
HttpClientRequest request = await _myClient.get( '127.0.0.1', 80 '/' );
HttpClientResponse response = await request.close();
await callback( response.toString() );
} on SocketException catch( e ) {
errorCallback( e.toString() );
}
}
因错误而失败:
cbLoginFailed :: SocketException: OS Error:
Connection refused, errno = 111, address = 127.0.0.1, port = 46414
目前使用的是安卓模拟器,已配置上网:
<uses-permission android:name="android.permission.INTERNET"/>
出于测试目的,HTTP 服务器是 MAMP,它执行 index.php 脚本并返回一些简单的字符串,如果我在浏览器中输入此链接:
http://127.0.0.1/index.php
如果我将 127.0.0.1 替换为 localhost,情况不会改变。
但如果我用有效的 public FQDN 更改 127.0.0.1,该方法就可以正常工作:
doLoginSuccess :: Instance of '_HttpClientResponse'
问题
为什么 android 模拟器/flutter/dart 处理 127.0.0.1 不同于 有效的 FQDN?
我该如何改变这种行为?
【问题讨论】:
-
您知道
127.0.0.1的意思是localhost,它是手机上执行代码的设备/模拟器本身吗?另见stackoverflow.com/questions/49855754/… -
@GünterZöchbauer 哈哈!几分钟前我错过了这一点;-)