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

Android端Pusher设置Authorizer时报FileNotFoundException,鉴权请求无法到达服务器

问题描述

我正在使用Pusher Channels实现实时功能,尝试订阅私有频道时,鉴权API请求无法到达我方服务器。该鉴权接口在前端侧可正常调用,仅Android端存在异常。我使用的是最新版本的Pusher SDK,且已反复核对App Key和Cluster配置无误。

Pusher配置截图1
Pusher配置截图2

以下是性能分析器的截图:
性能分析器截图1
性能分析器截图2

编辑补充:已新增错误日志
错误日志截图

相关代码如下:

fun getMapAuthorizationHeaders(token: String): HashMap<String, String> {
    val authHeader = HashMap<String, String>()
    authHeader["Accept"] = "application/json"
    authHeader["Authorization"] = "Bearer $token"
    //authHeader["Content-Type"] = "application/x-www-form-urlencoded";
    return authHeader
}
问题排查方案
  • 先恢复Content-Type请求头配置:Pusher Android SDK默认的私有频道鉴权请求采用application/x-www-form-urlencoded格式提交参数,你注释了该请求头配置,如果服务端对请求Content-Type有强制校验,会直接拒绝该请求,先取消该行注释验证是否解决问题。
  • 检查Android网络权限与明文请求限制:确认AndroidManifest.xml已经添加INTERNET权限,若你的鉴权接口为HTTP协议,Android 9及以上系统默认禁止明文请求,需要在application节点添加android:usesCleartextTraffic="true"配置,或直接将鉴权接口升级为HTTPS协议。
  • 校验鉴权端点配置:检查Pusher初始化时传入的authEndpoint路径是否完全匹配服务端接口,注意路径大小写、末尾斜杠、参数后缀是否和前端调用的接口完全一致,Android端不会自动补全路径规则。
  • 开启Pusher debug日志定位问题:初始化Pusher时开启debug日志,可直接查看鉴权请求的完整地址、请求头、参数、响应状态,快速判断是请求未发出还是服务端拦截:
val options = PusherOptions()
    .setCluster("你的集群ID")
    .setAuthorizer(HttpAuthorizer("你的鉴权接口地址") {
        override fun getHeaders(): MutableMap<String, String> {
            return getMapAuthorizationHeaders("你的token")
        }
    })
val pusher = Pusher("你的App Key", options)
pusher.connect()
// 打印debug日志查看请求详情
Log.d("Pusher调试", pusher.debugLog)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:45:03