获取Autodesk Forge旧Bucket时遇400错误,请求排查
问题诊断与修正方案
核心错误点
- API请求用途完全错误:你调用的
POST https://developer.api.autodesk.com/oss/v2/buckets是创建新Bucket的接口,但你的需求是查找已存在的旧Bucket,接口类型和用途不匹配。而且创建Bucket的POST请求必须携带JSON格式的请求体(包含bucketKey、policyKey等参数),你没有传任何请求体,这直接导致API返回“Unable to parse JSON”错误。 - Content-Type头配置错误:即使是创建Bucket,正确的Content-Type应该是
application/json,而非你写的text/json,这个错误也会干扰API对请求的解析。
正确操作步骤
1. 列出所有已存在的Bucket
调用GET接口获取账号下的所有Bucket,从中找到存放Revit文件的目标Bucket:
import requests bucket_list_url = 'https://developer.api.autodesk.com/oss/v2/buckets' headers = { 'Authorization': f'Bearer {access_token}' } bucket_list_response = requests.get(bucket_list_url, headers=headers) # 解析响应,遍历找到目标Bucket的bucketKey buckets = bucket_list_response.json().get('items', []) for bucket in buckets: print(f"Bucket Key: {bucket['bucketKey']}, 创建时间: {bucket['createdDate']}")
2. 列出目标Bucket中的文件
拿到正确的bucketKey后,用以下代码(或对应的curl命令)列出Bucket内的文件:
object_list_url = f'https://developer.api.autodesk.com/oss/v2/buckets/{目标bucketKey}/objects' object_response = requests.get(object_list_url, headers=headers) print(object_response.json())
对应的curl命令(替换占位符):
curl -X GET "https://developer.api.autodesk.com/oss/v2/buckets/你的BucketKey/objects" \ -H "Authorization: Bearer 你的AccessToken"
补充:如果后续需要创建新Bucket
若之后有创建Bucket的需求,POST请求必须携带正确的JSON体和Content-Type:
create_bucket_url = 'https://developer.api.autodesk.com/oss/v2/buckets' headers = { 'Authorization': f'Bearer {access_token}', 'Content-Type': 'application/json' } payload = { "bucketKey": "你的自定义bucketKey", "policyKey": "transient" # 可选值:transient、temporary、persistent } create_response = requests.post(create_bucket_url, json=payload, headers=headers)
内容的提问来源于stack exchange,提问作者Leandro A.G.
相关产品推荐
相关产品推荐

