diff --git a/update-service/src/main/java/com/xuqm/update/service/StoreSubmissionService.java b/update-service/src/main/java/com/xuqm/update/service/StoreSubmissionService.java index ccf4405..05bc113 100644 --- a/update-service/src/main/java/com/xuqm/update/service/StoreSubmissionService.java +++ b/update-service/src/main/java/com/xuqm/update/service/StoreSubmissionService.java @@ -292,13 +292,23 @@ public class StoreSubmissionService { String hwAppId = huaweiGetAppId(clientId, token, packageName); // 3. Request upload URL + // Huawei returns either urlList (list) or urlInfo (single object) Map uploadUrlResp = huaweiGetUploadUrl(clientId, token, hwAppId, file); + Map urlInfo; List> urlList = asMapList(uploadUrlResp.get("urlList")); - if (urlList.isEmpty()) urlList = asMapList(uploadUrlResp.get("data")); - if (urlList.isEmpty()) { - throw new RuntimeException("Huawei: upload url response missing urlList, response=" + summarizeMap(uploadUrlResp)); + if (!urlList.isEmpty()) { + urlInfo = urlList.get(0); + } else if (uploadUrlResp.containsKey("urlInfo") && uploadUrlResp.get("urlInfo") instanceof Map) { + @SuppressWarnings("unchecked") + Map single = (Map) uploadUrlResp.get("urlInfo"); + urlInfo = single; + } else { + urlList = asMapList(uploadUrlResp.get("data")); + if (urlList.isEmpty()) { + throw new RuntimeException("Huawei: upload url response missing urlList/urlInfo, response=" + summarizeMap(uploadUrlResp)); + } + urlInfo = urlList.get(0); } - Map urlInfo = urlList.get(0); String uploadUrl = (String) urlInfo.get("url"); @SuppressWarnings("unchecked") Map uploadHeaders = (Map) urlInfo.get("headers");