You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android模拟器端口转发访问EmbedIO服务出现ERR_EMPTY_RESPONSE如何解决

解决方案

1. 修改Web服务监听地址

你当前代码绑定的是模拟器虚拟内网IP(10.0.2.16),而adb端口转发的流量默认发往模拟器回环地址(127.0.0.1),二者不匹配导致服务无法接收请求,返回空响应。
将App.OnStart方法中Web服务启动地址改为监听所有网卡:

// 替换原有的var url = $"http://{localIPAddress}:8080"; 行
var url = "http://0.0.0.0:8080";

0.0.0.0代表监听设备所有网卡的8080端口,可同时兼容adb转发流量、模拟器内部访问、局域网访问三种场景。

2. 补充Android权限配置

在Android项目的AndroidManifest.xml中添加必要网络权限,同时开启明文流量支持:

<manifest ...>
    <!-- 添加网络权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    <application 
        ...
        <!-- 允许明文HTTP请求,Android 9+ 默认禁用 -->
        android:usesCleartextTraffic="true">
        ...
    </application>
</manifest>

3. 验证端口转发规则

执行命令adb forward --list确认转发规则存在,正常输出应包含tcp:8080 tcp:8080,如果规则不存在重新执行:
adb forward tcp:8080 tcp:8080

4. 修复接口响应异常

你当前的ChangeBackGround接口返回值为void,部分版本EmbedIO对无返回值的GET请求会出现响应头构造异常,可修改为明确返回值:

[Route(HttpVerbs.Get, "/ChangeBackGround")]
public async Task<bool> ChangeBackGround()
{
    Device.BeginInvokeOnMainThread(() =>
    {
        App.Current.MainPage.BackgroundColor = Color.Green;
    });
    return true;
}

完成以上修改后重启应用和adb转发规则,再次访问http://localhost:8080/api/ChangeBackGround即可正常响应。

内容的提问来源于stack exchange,提问作者Sach K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:36:02