
# 接口调用下载
体积计算的结果存放在华为云的云存储服务OBS上，用户需要从指定的OBS路径下载，具体步骤如下：
1. 获取华为云账号的访问密钥(AK/SK)，若本地已保存密钥，可跳过本步骤。
2. 获取体积计算结果的下载路径。 获取体积计算作业详情的响应outputs，获取"体积计算结果"的OBS URL：
   ```
   outputs": {
           "BATCH_VOL_RESULT_OBS": {
               "paths": [
                   "obs://{BUCKET_NAME}/{MEASURE_SPACE_NAME}/{COLLECT_BATCH_ID}/{JOB_ID}/volume_result"
               ]
           }
       },
   ```
   
3. 使用OBS工具，用户可参照[obsutil使用指南](https://support.huaweicloud.com/utiltg-obs/obs_11_0001.html)，结合从[步骤1]获取的访问密钥下载体积结果。
4. 对文件参照下述格式进行解析，得到体积计算结果。
   ```
   # 导入必要的库
   import json
   import os
   # 定义一个简单的结构体类来表示数据
   class DataItem:
       def __init__(self, name, result):
           self.name = name
           self.result = result
   # 定义下载文件的函数
   def download_file_from_obs(bucket_name, object_name, destination_file_path):
       # 这里使用obsutil命令行工具来下载文件
       os.system(f"obsutil cp obs://{bucket_name}/{object_name} {destination_file_path}")
   # 定义读取文件并反序列化JSON的函数
   def read_and_deserialize_json(file_path):
       with open(file_path, 'r') as file:
           data = json.load(file)
       return data
   # 将JSON数据反序列化为DataItem结构体列表的函数
   def deserialize_to_struct(json_data):
       struct_list = []
       for item in json_data:
           struct_list.append(DataItem(item['name'], item['result']))
       return struct_list
   # 主程序
   if __name__ == "__main__":
       # 从OBS下载result.txt文件
       download_file_from_obs('xxx', 'xxx/result.txt', 'result.txt')
       # 读取并反序列化JSON数据
       json_data = read_and_deserialize_json('result.txt')
       # 将JSON数据反序列化为结构体列表
       data_struct_list = deserialize_to_struct(json_data)
       # 打印结果
       for data_item in data_struct_list:
           print(f"name: {data_item.name}, result: {data_item.result}")
   ```
   
 
