1

我正在编写一个 python 脚本来通过 Connect API 更新华为 AppGallery 上的应用程序。我成功获取了令牌并上传了 URL,但无法上传 APK/AAB。收到此错误 -

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

这是我的python脚本

def uploadAAB(uploadUrl, authCode, accessToken, appId):
    try:
        fileName = 'latest_hms.apk'
        headers = {
            "Authorization": "Bearer " + accessToken,
            "accept": "application/json",
            "client_id": clientId,
            "Content-Type": "multipart/form-data"
        }

        uploadBody = {
            "authCode": authCode,
            "fileCount": 1
        }

        with open(aabPath, 'rb') as f:
            f.seek(0, os.SEEK_END)
            print(f.tell()) # printing the correct size
            first_phase = requests.post(
                uploadUrl,
                files={fileName: f},
                data=uploadBody,
                headers=headers)
            
            if first_phase.status_code == 200:
                print(first_phase.json())
                body = {
                    'fileType': 5,
                    'files': [{
                        'fileName': fileName,
                        'fileDestUrl': first_phase.json()['result']['UploadFileRsp']['fileInfoList'][0]['fileDestUlr'],
                        'size': str(first_phase.json()['result']['UploadFileRsp']['fileInfoList'][0]['size'])
                    }]
                }

                fileHeader = {
                    'client_id': clientId,
                    'Authorization': 'Bearer ' + accessToken,
                }
                params = {
                    'appId': appId,
                }
                second_phase = requests.put(
                    BASE_URL + "/publish/v2/app-file-info",
                    headers=fileHeader,
                    json=body,
                    params=params)
                print(second_phase.json())
        
    except (requests.exceptions.RequestException, requests.exceptions.HTTPError, KeyError) as err:
        stopOnError(repr(err))

请帮帮我。

4

2 回答 2

0

华为似乎在 2022 年 2 月对 AppGallery API 进行了更改。我不知道这是否是故意的,但您现在必须指定一个文件名"file"而不是您的原始文件名(以前有效)。请参阅我对 Natgho 的 HMS-Publishing-API 代码的拉取请求。

于 2022-02-25T22:29:05.867 回答
0

{'result': {'CException': {'errorCode': 70001405, 'errorDesc': '没有从请求中获取文件!'}, 'resultCode': '70001405'}}

此错误表示请求中没有文件。该文件未成功包含在请求中。请确保该文件是可实现的。

于 2022-02-09T09:42:29.700 回答