0

我的问题:

我正在编写一个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 脚本工作的区别是什么?

4

1 回答 1

0

发布照片的正确 URL 应该是:https ://developer.api.autodesk.com/photo-to-3d/v1/file而不是https://developer.api.autodesk.com/photo-to-3d/v1/photoscene/photo-to-3d/v1/file这样,因此会出现 404 错误。

在此处查看详细信息

于 2019-10-17T03:52:36.090 回答