fix(bugcollect): LogUploader 自动将相对路径补全为绝对 URL

- bugCollectApiUrl 为相对路径时,基于 XuqmSDK.platformUrl 拼接完整地址
- 修复 'Expected URL scheme http or https' 异常
这个提交包含在:
XuqmGroup 2026-06-18 19:06:03 +08:00
父节点 3ded960383
当前提交 d742317c4d

查看文件

@ -3,6 +3,7 @@ package com.xuqm.sdk.bugcollect.internal
import android.util.Log
import com.xuqm.sdk.bugcollect.IssueEvent
import com.xuqm.sdk.bugcollect.LogEvent
import com.xuqm.sdk.XuqmSDK
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.Request
@ -26,9 +27,17 @@ internal object LogUploader {
private val JSON_MEDIA = "application/json; charset=utf-8".toMediaType()
/** 将相对路径补全为绝对 URL基于平台地址。 */
private fun resolveUrl(path: String): String {
val trimmed = path.trimEnd('/')
if (trimmed.startsWith("http://") || trimmed.startsWith("https://")) return trimmed
val base = XuqmSDK.platformUrl.trimEnd('/')
return "$base/${trimmed.trimStart('/')}"
}
fun uploadIssues(logApiUrl: String, issues: List<IssueEvent>) {
if (issues.isEmpty()) return
val url = "${logApiUrl.trimEnd('/')}/bugcollect/v1/issues/batch"
val url = "${resolveUrl(logApiUrl)}/bugcollect/v1/issues/batch"
val envelope = createEnvelope()
val events = JSONArray()
for (issue in issues) {
@ -40,7 +49,7 @@ internal object LogUploader {
fun uploadEvents(logApiUrl: String, events: List<LogEvent>) {
if (events.isEmpty()) return
val url = "${logApiUrl.trimEnd('/')}/bugcollect/v1/events/batch"
val url = "${resolveUrl(logApiUrl)}/bugcollect/v1/events/batch"
val envelope = createEnvelope()
val eventsArray = JSONArray()
for (event in events) {
@ -51,7 +60,7 @@ internal object LogUploader {
}
fun uploadIssue(logApiUrl: String, issue: IssueEvent) {
val url = "${logApiUrl.trimEnd('/')}/bugcollect/v1/issues/batch"
val url = "${resolveUrl(logApiUrl)}/bugcollect/v1/issues/batch"
val envelope = createEnvelope()
val events = JSONArray().put(issueToJson(issue))
envelope.put("events", events)