我的问题:
我正在编写一个python3程序,它使用requests.post()调用Autodesk Forge Reality Capture photo-to-3d API:
https://developer.api.autodesk.com/photo-to-3d/v1/photoscene/photo-to-3d/v1/file
但是,我似乎无法让 API 接受我的图像文件,我将其作为可公开访问的 URL 传递。
你能告诉我应该怎么做吗?
我的(非工作)PYTHON + 请求代码:
forge_url = "https://developer.api.autodesk.com/photo-to-3d/v1/photoscene/photo-to-3d/v1/file"
headers = {'Content-type': 'application/x-www-form-urlencoded'}
image_url_list = { 'http://siptea.net/wp-content/uploads/2017/02/Persimmon-Ceramic-Teapot-Sip-Tea-4786.jpg' }
for file_url in image_url_list:
file_parameters = {'photosceneid': photoscene_id, 'type': 'image', 'file[0]': file_url}
print("file_parameters = ", file_parameters)
response = requests.post(forge_url, auth=BearerAuth(access_token), headers=headers, data=file_parameters)
json_object = response.json()
json_string = json.dumps(json_object)
print("json_string = ", json_string)
我的输出(显示错误响应):
file_parameters = {'photosceneid': 'bkd3x48dSl5RpcwdfWYgVfGhD0cMQPgexpLkXLbPtUU', 'type': 'image', 'file[0]': ' http://siptea.net/wp-content/uploads/2017/02/Persimmon-Ceramic-Teapot -Sip-Tea-4786.jpg '}
json_string = {"developerMessage": "请求的资源不存在。", "moreInfo": " https://forge.autodesk.com/en/docs/oauth/v2/developers_guide/error_handling/ ", "errorCode": “org.mozilla.javascript.Undefined@0”}
下面的 BASH 脚本应该是等价的,但它可以工作,而 python 请求不能。我需要在我的 python 代码中更改什么?
我的(工作)BASH + curl 代码:
file_url="http://siptea.net/wp-content/uploads/2017/02/Persimmon-Ceramic-Teapot-Sip-Tea-4786.jpg"
json=`curl -s https://developer.api.autodesk.com/photo-to-3d/v1/file \
-H "Authorization: Bearer $access_token" \
-d "photosceneid=$photoscene_id" \
-d 'type=image' \
-d "file[0]=$file_url"
那么导致 Python 代码失败和 Bash 脚本工作的区别是什么?