From d742317c4d70f490fd23d91b65eb9bf669507482 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Thu, 18 Jun 2026 19:06:03 +0800 Subject: [PATCH] =?UTF-8?q?fix(bugcollect):=20LogUploader=20=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=B0=86=E7=9B=B8=E5=AF=B9=E8=B7=AF=E5=BE=84=E8=A1=A5?= =?UTF-8?q?=E5=85=A8=E4=B8=BA=E7=BB=9D=E5=AF=B9=20URL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - bugCollectApiUrl 为相对路径时,基于 XuqmSDK.platformUrl 拼接完整地址 - 修复 'Expected URL scheme http or https' 异常 --- .../xuqm/sdk/bugcollect/internal/LogUploader.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/internal/LogUploader.kt b/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/internal/LogUploader.kt index 0aa94e5..150277a 100644 --- a/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/internal/LogUploader.kt +++ b/sdk-bugcollect/src/main/java/com/xuqm/sdk/bugcollect/internal/LogUploader.kt @@ -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) { 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) { 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)