fix(update): 修复华为上传URL响应格式 urlInfo 单对象处理

华为实际返回格式为 urlInfo (单对象) 而非 urlList (列表),
代码需同时支持两种格式:
- urlList: 列表形式(旧版API)
- urlInfo: 单对象形式(当前API,含 url/objectId/headers/method)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
XuqmGroup 2026-05-15 00:16:19 +08:00
父节点 2b975c990a
当前提交 fb8a9d453d

查看文件

@ -292,13 +292,23 @@ public class StoreSubmissionService {
String hwAppId = huaweiGetAppId(clientId, token, packageName); String hwAppId = huaweiGetAppId(clientId, token, packageName);
// 3. Request upload URL // 3. Request upload URL
// Huawei returns either urlList (list) or urlInfo (single object)
Map<String, Object> uploadUrlResp = huaweiGetUploadUrl(clientId, token, hwAppId, file); Map<String, Object> uploadUrlResp = huaweiGetUploadUrl(clientId, token, hwAppId, file);
Map<String, Object> urlInfo;
List<Map<String, Object>> urlList = asMapList(uploadUrlResp.get("urlList")); List<Map<String, Object>> urlList = asMapList(uploadUrlResp.get("urlList"));
if (urlList.isEmpty()) urlList = asMapList(uploadUrlResp.get("data")); if (!urlList.isEmpty()) {
urlInfo = urlList.get(0);
} else if (uploadUrlResp.containsKey("urlInfo") && uploadUrlResp.get("urlInfo") instanceof Map) {
@SuppressWarnings("unchecked")
Map<String, Object> single = (Map<String, Object>) uploadUrlResp.get("urlInfo");
urlInfo = single;
} else {
urlList = asMapList(uploadUrlResp.get("data"));
if (urlList.isEmpty()) { if (urlList.isEmpty()) {
throw new RuntimeException("Huawei: upload url response missing urlList, response=" + summarizeMap(uploadUrlResp)); throw new RuntimeException("Huawei: upload url response missing urlList/urlInfo, response=" + summarizeMap(uploadUrlResp));
}
urlInfo = urlList.get(0);
} }
Map<String, Object> urlInfo = urlList.get(0);
String uploadUrl = (String) urlInfo.get("url"); String uploadUrl = (String) urlInfo.get("url");
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, String> uploadHeaders = (Map<String, String>) urlInfo.get("headers"); Map<String, String> uploadHeaders = (Map<String, String>) urlInfo.get("headers");