Android 127.0.0.1(环回)连接:适用于 WiFi,3G/4G 时失败
Android 127.0.0.1 (loopback) connection: Works on WiFi, fails with 3G/4G
我的应用程序嵌入了一个本地 http 服务器,可以通过位于 URL 的环回设备访问:http://127.0.0.1:8080/
它在启用 WiFi 的情况下工作正常,在没有外部网络(没有 WiFi,没有 3G)的情况下也可以正常工作,但是当禁用 WiFi 并启用 3G 时它会失败。
通过 adb 连接 shell 并执行 "netcfg" 我可以看到环回设备始终处于启用状态:
shell@android:/ $ netcfg
...
lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00
...
Alos "ping 127.0.0.1" 在切换 on/off WiFi 或 3G 时继续工作。
有什么想法吗?
更新:
添加到拼图中。从我的开发计算机转发 tcp 端口:
$ adb forward tcp:8080 tcp:8080
然后我尝试使用 http://127.0.0.1:8080/ 从我的 PC 连接。它可以工作,但是在 android 设备上使用浏览器 运行 时它继续失败。
更新 2015-06-01:
在 3G 上工作时,我在 adb logcat 上看到很多类似的相关错误:
W/ContextImpl( 504): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendStickyBroadcast:1239 com.android.server.TelephonyRegistry.onReceive:818 android.app.LoadedApk$ReceiverDispatcher$Args.run:788 android.os.Handler.handleCallback:725 android.os.Handler.dispatchMessage:92
和
E/CellLocation( 8336): create GsmCellLocation
触发Gsm activity连接环回设备对我来说没有任何意义。
更新 2015-06-01 (2):
我设法安装了wget
/data/data/com.XXXX.yyy/files/appFiles/bin
然后我通过 "adb shell" -> "run-as com.XXXX.yyy" 连接,最后执行:
wget -O - “http://127.0.0.1:8080/”
我工作正常,所以我可以丢弃任何在本地主机上禁用环回访问的奇怪安全设置,所以我猜这与 WebView/WebViewClient 试图错误地使用 3G 外部代理访问环回有关。现在我想知道是否可以在 WebView 上禁用代理。
最后看起来是 WebView 尝试访问外部代理时出现问题,即使是对于回溯界面也是如此。我按照以下提出的解决方案解决了问题:WebView android proxy
我的应用程序嵌入了一个本地 http 服务器,可以通过位于 URL 的环回设备访问:http://127.0.0.1:8080/
它在启用 WiFi 的情况下工作正常,在没有外部网络(没有 WiFi,没有 3G)的情况下也可以正常工作,但是当禁用 WiFi 并启用 3G 时它会失败。
通过 adb 连接 shell 并执行 "netcfg" 我可以看到环回设备始终处于启用状态:
shell@android:/ $ netcfg
...
lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00
...
Alos "ping 127.0.0.1" 在切换 on/off WiFi 或 3G 时继续工作。
有什么想法吗?
更新: 添加到拼图中。从我的开发计算机转发 tcp 端口:
$ adb forward tcp:8080 tcp:8080
然后我尝试使用 http://127.0.0.1:8080/ 从我的 PC 连接。它可以工作,但是在 android 设备上使用浏览器 运行 时它继续失败。
更新 2015-06-01: 在 3G 上工作时,我在 adb logcat 上看到很多类似的相关错误:
W/ContextImpl( 504): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendStickyBroadcast:1239 com.android.server.TelephonyRegistry.onReceive:818 android.app.LoadedApk$ReceiverDispatcher$Args.run:788 android.os.Handler.handleCallback:725 android.os.Handler.dispatchMessage:92
和
E/CellLocation( 8336): create GsmCellLocation
触发Gsm activity连接环回设备对我来说没有任何意义。
更新 2015-06-01 (2): 我设法安装了wget /data/data/com.XXXX.yyy/files/appFiles/bin
然后我通过 "adb shell" -> "run-as com.XXXX.yyy" 连接,最后执行: wget -O - “http://127.0.0.1:8080/”
我工作正常,所以我可以丢弃任何在本地主机上禁用环回访问的奇怪安全设置,所以我猜这与 WebView/WebViewClient 试图错误地使用 3G 外部代理访问环回有关。现在我想知道是否可以在 WebView 上禁用代理。
最后看起来是 WebView 尝试访问外部代理时出现问题,即使是对于回溯界面也是如此。我按照以下提出的解决方案解决了问题:WebView android proxy