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

Android应用跨网络无法访问Golang API问题求助

跨网络访问Golang API问题排查思路

1. 先确认服务器端的网络可达性

  • 脱离内网环境(比如用手机流量),先绕开Android端验证API是否能正常访问:
    • 用手机浏览器直接打开API的GET接口(如果有),看是否能返回内容
    • 用非内网的电脑执行curl -X POST http://test.freeddns.org:端口/你的接口路径 -d "测试数据",检查API是否响应
  • 检查路由器端口转发:旧笔记本作为服务器,必须在路由器上配置端口映射,把公网对应端口的流量转发到笔记本的内网IP和API端口,确保外部流量能进入
  • 验证DDNS解析:执行nslookup test.freeddns.org或ping test.freeddns.org,确认返回的IP和服务器公网IP一致

2. 核对Android端的网络配置

  • 确认network_security_config.xml已关联到Manifest:必须在<application>标签里添加android:networkSecurityConfig="@xml/network_security_config",否则配置不会生效
  • 如果用公网IP访问,当前配置只允许了域名的明文流量,需要补充IP规则:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config xmlns:android="http://schemas.android.com/apk/res/android">
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">test.freeddns.org</domain>
            <ip>服务器公网IP</ip>
        </domain-config>
    </network-security-config>
    
  • 检查Volley请求的URL:确认端口、接口路径和内网访问时完全一致,有没有拼写错误(比如漏端口、路径打错)

3. 排查防火墙拦截

  • 服务器端(旧笔记本)的防火墙:暂时关闭防火墙测试,或者手动添加允许API端口入站的规则
  • 路由器防火墙:检查路由器安全设置,确保没有屏蔽对应端口的外部访问

4. 抓取详细错误日志定位问题

  • 在Volley的ErrorListener里打印完整错误信息,比如:
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
            response -> { /* 处理响应逻辑 */ },
            error -> {
                Log.e("VolleyErr", "错误码: " + (error.networkResponse != null ? error.networkResponse.statusCode : "无"));
                Log.e("VolleyErr", "错误信息: " + error.getMessage());
                if (error.networkResponse != null) {
                    Log.e("VolleyErr", "响应内容: " + new String(error.networkResponse.data));
                }
            });
    
  • 从日志里判断是连接超时(网络不通)、404(路径错误)、500(服务器内部异常)还是其他问题,针对性解决

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:55:24