fix: 语音下载改用 HTTP 绕过 OSS TLS 兼容问题
阿里云 OSS 的 HTTPS 在 Android 8.1 conscrypt 下 TLS 握手被 reset OSS 同时支持 HTTP,降级为 HTTP 下载即可 使用独立的无拦截器 OkHttpClient 避免签名干扰 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -44,7 +44,9 @@ class TaskListFragment : BaseFragment<FragmentTaskListBinding>() {
|
||||
|
||||
@Inject lateinit var taskApi: TaskApi
|
||||
@Inject lateinit var nfcTaskManager: NfcTaskManager
|
||||
@Inject lateinit var okHttpClient: OkHttpClient
|
||||
|
||||
/** 下载用的 OkHttp(不带签名拦截器,走 HTTP 避免 TLS 问题) */
|
||||
private val downloadClient by lazy { OkHttpClient.Builder().build() }
|
||||
|
||||
/** 任务 ID 列表(queryTaskIds 返回) */
|
||||
private var taskList: List<TaskItem> = emptyList()
|
||||
@@ -460,11 +462,13 @@ class TaskListFragment : BaseFragment<FragmentTaskListBinding>() {
|
||||
}
|
||||
}
|
||||
|
||||
/** 用 OkHttp 下载音频文件到缓存目录(复用应用 SSL 配置) */
|
||||
/** 用 OkHttp 下载音频文件到缓存目录 */
|
||||
private fun downloadToCache(url: String): java.io.File? {
|
||||
return try {
|
||||
val request = Request.Builder().url(url).build()
|
||||
val response = okHttpClient.newCall(request).execute()
|
||||
// OSS 的 HTTPS 在 Android 8.1 设备 TLS 握手失败,降级为 HTTP
|
||||
val httpUrl = url.replace("https://", "http://")
|
||||
val request = Request.Builder().url(httpUrl).build()
|
||||
val response = downloadClient.newCall(request).execute()
|
||||
if (!response.isSuccessful) {
|
||||
Timber.w("语音下载HTTP错误: ${response.code}")
|
||||
return null
|
||||
|
||||
Reference in New Issue
Block a user