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

使用Capacitor在安卓物理设备上无法发起HTTP请求的问题

安卓物理设备HTTP请求404排查解决指南

问题定位

网页端Vue PWA的HTTP请求正常,但安卓物理设备上返回404,HTTPS请求无异常,替换capacitor-http后问题依旧,说明问题核心不在请求库,而是安卓系统限制或设备-服务器网络/配置不匹配导致。

排查与解决步骤

  • 修复安卓明文HTTP限制
    安卓9及以上默认禁止明文HTTP请求,需配置网络安全策略:

    1. 在android/app/src/main/res/xml/下新建network_security_config.xml,内容如下:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">46.175.215.101</domain>
        </domain-config>
    </network-security-config>
    
    1. 在AndroidManifest.xml的<application>标签中添加引用:
    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config">
    
  • 验证设备与服务器连通性
    用安卓设备自带浏览器直接访问拼接后的完整URL(如http://46.175.215.101:8089/IMSToWebProxyNew/receptions):

    • 若浏览器也返回404:说明服务器可能限制了安卓设备的请求(如UA校验),或设备所在网络无法访问该服务器(如服务器在局域网,设备未接入同网段)
    • 若浏览器能正常返回:检查代码中baseUrl的拼接逻辑,打印实际请求URL确认无格式错误(比如多/少斜杠)
  • 确认Capacitor网络权限
    检查AndroidManifest.xml中是否已添加必要权限:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  • 排查服务器端配置
    部分服务器会校验请求的Origin或User-Agent:网页端Origin为浏览器域名,而安卓Capacitor应用的Origin是capacitor://localhost,需确保服务器允许该Origin的跨域请求(避免因CORS导致请求被重定向到不存在的路径)

代码调试技巧

在请求前打印完整URL,便于在Android Studio的Logcat中排查拼接错误:

export async function allDeps(): Promise<ReceptionDTO[] | undefined> {
  const baseUrl = getBaseUrl();
  const fullUrl = `${baseUrl}/receptions`;
  console.log('当前请求URL:', fullUrl);
  return (await Http.get({url: fullUrl})).data;
}

内容的提问来源于stack exchange,提问作者Дмитрий

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:42:51