HarmonyOS鸿蒙Next中使用Publishing API服务上传软件包失败报70001405错误码的解决方案

HarmonyOS鸿蒙Next中使用Publishing API服务上传软件包失败报70001405错误码的解决方案

问题背景

最近想通过华为AppGallery Connect提供的Publishing API来向华为应用市场上传软件包以更新我的已上架应用,我按照官网文档的指导调用相关接口设置我的应用,我先是调用了上传文件接口上传软件包,然后又调用更新应用文件信息接口想要将上传的软件包与自己的应用绑定,却遇到了如下报错:

{'result': {'CException': {'errorCode': 70001405, 'errorDesc': 'get no file from request!'}, 'resultCode': '70001405'}}

一开始很奇怪,难道文件没有上传成功么?于是我看了一下调用接口的数据流情况

cke_389.png

发现是有数据上传的,那为什么会报没有文件呢?

解决方法

我上传文件的代码如下:

def uploadApp(authCode, uploadUrl, accessToken):
    header = {
        'client_id': clientId,
        'Authorization': 'Bearer ' + accessToken
    }
    req_body = {
        'authCode': authCode,
        'fileCount': 1
    }
    params = {
        'appId': appId,
    }

    with open(aabPath, 'rb') as f:
        prep = requests.post(uploadUrl,
                             files={'file': f},
                             data=req_body,
                             headers=header)
        logSuccess("Upload prep")

        if prep.status_code == 200:
            j = prep.json()
            print(j)
            body = {
                'fileType': 5,
                'files': [{
                    'fileName': aabName,
                    'fileDestUrl': j['result']['UploadFileRsp']['fileInfoList'][0]['fileDestUlr'],
                    'size': str(j['result']['UploadFileRsp']['fileInfoList'][0]['size'])
                }]
            }
            upload = requests.put(baseApi + "/publish/v2/app-file-info",
                                  headers=header,
                                  json=body,
                                  params=params)
            if upload.status_code == 200:
                logSuccess("Upload complete!")
                return upload
            else:
                logError(upload)
        else:
            logError(prep)

可以看到我将files文件放在了python requests.post方法的入参中并且在header中将content type设置为了multipart/form-data。根据文档描述,提交接口请求的content type需要为multipart/form-data。这里我犯了两个错误:第一个就是files文件的key值需要是file,而不是我设置的apkName,但是修改成file后还是会报同样的错误。和小伙伴研究了很久,发现原来这里不需要声明content-type为multipart/form-data,因为请求中还有其他参数,需要为json形式,如果在header中声明content type为multipart/form-data则会影响到其他参数,导致文件上传失败。所以正确的header如下:

header = {
    'client_id': clientId,
    'Authorization': 'Bearer ' + accessToken,
}

总结

参考文档:Publishing API开发指南


更多关于HarmonyOS鸿蒙Next中使用Publishing API服务上传软件包失败报70001405错误码的解决方案的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

收藏备用

更多关于HarmonyOS鸿蒙Next中使用Publishing API服务上传软件包失败报70001405错误码的解决方案的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中使用Publishing API服务上传软件包时,若遇到70001405错误码,通常是由于软件包的签名或配置问题导致的。具体原因可能包括:

  • 签名问题:软件包未正确签名或签名证书不匹配。确保使用正确的签名证书对软件包进行签名,并且证书与开发者账号绑定。

  • 配置问题:软件包的配置文件(如app.jsonmanifest.json)可能存在错误或不完整。检查配置文件中的bundleNameversionCodeversionName等字段是否正确填写。

  • 网络问题:上传过程中网络不稳定或中断,导致上传失败。确保网络连接稳定后重新尝试上传。

  • API调用问题:Publishing API的调用参数可能不正确。检查API调用时的参数,如appIdpackageName等是否与软件包信息一致。

  • 服务器问题:华为开发者联盟服务器可能出现临时故障。可以稍后重试,或查看华为开发者联盟的公告确认服务器状态。

解决步骤:

  1. 检查软件包的签名,确保使用正确的签名证书。

  2. 核对软件包的配置文件,确保所有字段填写正确。

  3. 确保网络连接稳定,重新尝试上传。

  4. 检查Publishing API的调用参数,确保与软件包信息一致。

  5. 若问题持续,稍后重试或查看华为开发者联盟的公告。

通过以上步骤,通常可以解决70001405错误码导致的上传失败问题。

在HarmonyOS鸿蒙Next中,使用Publishing API服务上传软件包时遇到70001405错误码,通常是由于软件包签名或配置问题导致的。

  • 检查签名:确保软件包已正确签名,且签名证书与开发者账号匹配。
  • 验证配置:确认app.jsonmanifest.json文件中的包名、版本号等配置信息无误。
  • 网络环境:确保网络连接稳定,避免因网络问题导致上传失败。
  • API权限:检查开发者账号是否具备上传权限,必要时联系管理员授权。
  • 日志分析:查看上传日志,定位具体错误原因。

如问题仍未解决,建议联系华为开发者支持团队获取进一步帮助。

回到顶部