getManifest 问题(forge-php-client)
Issue with getManifest (forge-php-client)
DerivativesApi.getManifest 方法或 ManifestChildren.setRole 方法似乎有问题。
当我调用“$apiInstance->getManifest”时,我收到以下错误消息:
“调用 DerivativesApi->getManifest 时出现异常:'role' 的值无效,必须是‘2d’、‘3d’、'graphics'、'manifest'、[=43 之一=]"
这是堆栈跟踪:
1 *\ObjectSerializer.php(236): Autodesk\Forge\Client\ObjectSerializer::deserialize(Object(stdClass), '\\Autodesk\\Forge...', NULL)
2 *\ObjectSerializer.php(291): Autodesk\Forge\Client\ObjectSerializer::deserialize(Array, '\\Autodesk\\Forge...', NULL)\n
3 *\ObjectSerializer.php(236): Autodesk\Forge\Client\ObjectSerializer::deserialize(Object(stdClass), '\\Autodesk\\Forge...', NULL)
4 *\ObjectSerializer.php(291): Autodesk\Forge\Client\ObjectSerializer::deserialize(Array, '\\Autodesk\\Forge...', NULL)\n
5 *\DerivativesApi.php(403): Autodesk\Forge\Client\ObjectSerializer::deserialize(Object(stdClass), '\\Autodesk\\Forge...', Array)\n
6 *\DerivativesApi.php(336): Autodesk\Forge\Client\Api\DerivativesApi->getManifestWithHttpInfo('dXJuOmFkc2sub2J...', NULL)\n
urn 正确且编码正确,auth-token 的范围是'viewables:read'。
我不知道去哪里搜索,如果有任何帮助,我将不胜感激。
编辑 1:
$twoLeggedAuth->setScopes( [ 'data:read' ] );
$twoLeggedAuth->fetchToken();
$objApiInstance = new Autodesk\Forge\Client\Api\ObjectsApi( $twoLeggedAuth );
$correctObject = "";
$base64Urn = rtrim( strtr( base64_encode( $requestedURN ), '+/', '-_' ), '=' );
try{
$bucketobjects = $objApiInstance->getObjects($bucket_key);
foreach ($bucketobjects->getItems() as $key => $bucket_object){
if($bucket_object->getObjectId() === $requestedURN){
$correctObject = rtrim( strtr( base64_encode( $bucket_object->getObjectId() ), '+/', '-_' ), '=' );
}
}
}catch (Exception $e){
$erg['failure'] = 'Exception when calling ObjectsApi->getObjects: ' . $e->getMessage();
}
$totranslate = true;
############ TRANSLATION-JOB
if($totranslate){
$twoLeggedAuth->setScopes( [ 'data:read', 'data:write', 'data:create' ] );
$twoLeggedAuth->fetchToken();
$apiInstance = new Autodesk\Forge\Client\Api\DerivativesApi( $twoLeggedAuth );
$jobInput = array(
'urn' => $correctObject
);
$jobPayloadInput = new Autodesk\Forge\Client\Model\JobPayloadInput( $jobInput );
$jobOutputItem = array(
'type' => 'svf',
'views' => array('3d', '2d')
);
$jobPayloadItem = new Autodesk\Forge\Client\Model\JobPayloadItem( $jobOutputItem );
$jobOutput = [
'formats' => array( $jobPayloadItem )
];
$jobPayloadOutput = new Autodesk\Forge\Client\Model\JobPayloadOutput( $jobOutput );
$job = new \Autodesk\Forge\Client\Model\JobPayload();
$job->setInput( $jobPayloadInput );
$job->setOutput( $jobPayloadOutput );
$x_ads_force = true;
try {
$result = $apiInstance->translate( $job, $x_ads_force );
$erg['success'] = 'Success! ';
} catch( Exception $e ) {
$erg['failure'] = 'Exception when calling DerivativesApi->translate: ' . $e->getMessage();
}
}
$twoLeggedAuth->setScopes( [ 'data:read' ] );
$twoLeggedAuth->fetchToken();
$apiInstance = new Autodesk\Forge\Client\Api\DerivativesApi( $twoLeggedAuth );
try {
$result = $apiInstance->getManifest( $correctObject, null );
$erg['translationstatus'] = 'Translation Status: ' . $result['status'];
$erg['translationprogress'] = "\t\nTranslation Progress: " . $result['progress'];
} catch( Exception $e ) {
$erg['failure'] = 'Exception when calling DerivativesApi->getManifest: ' . $e->getMessage();
}
感谢您的有用提示,我找到了解决方案。
该错误似乎是一个错误,因为 ManifestChildren.role 的新角色是在没有在模型中声明 bee 的情况下定义的。
PROPERTYDB -> Autodesk.CloudPlatform.PropertyDatabase(例如缺少一个 'role')
作为解决方法(对我有用)只需将 getManifest() 的参数 "accept_encoding" 设置为 'gzip':
$result = $apiInstance->getManifest( $correctObject, 'gzip' );
现在一切正常。
查看 here 了解更多信息。
DerivativesApi.getManifest 方法或 ManifestChildren.setRole 方法似乎有问题。
当我调用“$apiInstance->getManifest”时,我收到以下错误消息:
“调用 DerivativesApi->getManifest 时出现异常:'role' 的值无效,必须是‘2d’、‘3d’、'graphics'、'manifest'、[=43 之一=]"
这是堆栈跟踪:
1 *\ObjectSerializer.php(236): Autodesk\Forge\Client\ObjectSerializer::deserialize(Object(stdClass), '\\Autodesk\\Forge...', NULL)
2 *\ObjectSerializer.php(291): Autodesk\Forge\Client\ObjectSerializer::deserialize(Array, '\\Autodesk\\Forge...', NULL)\n
3 *\ObjectSerializer.php(236): Autodesk\Forge\Client\ObjectSerializer::deserialize(Object(stdClass), '\\Autodesk\\Forge...', NULL)
4 *\ObjectSerializer.php(291): Autodesk\Forge\Client\ObjectSerializer::deserialize(Array, '\\Autodesk\\Forge...', NULL)\n
5 *\DerivativesApi.php(403): Autodesk\Forge\Client\ObjectSerializer::deserialize(Object(stdClass), '\\Autodesk\\Forge...', Array)\n
6 *\DerivativesApi.php(336): Autodesk\Forge\Client\Api\DerivativesApi->getManifestWithHttpInfo('dXJuOmFkc2sub2J...', NULL)\n
urn 正确且编码正确,auth-token 的范围是'viewables:read'。
我不知道去哪里搜索,如果有任何帮助,我将不胜感激。
编辑 1:
$twoLeggedAuth->setScopes( [ 'data:read' ] );
$twoLeggedAuth->fetchToken();
$objApiInstance = new Autodesk\Forge\Client\Api\ObjectsApi( $twoLeggedAuth );
$correctObject = "";
$base64Urn = rtrim( strtr( base64_encode( $requestedURN ), '+/', '-_' ), '=' );
try{
$bucketobjects = $objApiInstance->getObjects($bucket_key);
foreach ($bucketobjects->getItems() as $key => $bucket_object){
if($bucket_object->getObjectId() === $requestedURN){
$correctObject = rtrim( strtr( base64_encode( $bucket_object->getObjectId() ), '+/', '-_' ), '=' );
}
}
}catch (Exception $e){
$erg['failure'] = 'Exception when calling ObjectsApi->getObjects: ' . $e->getMessage();
}
$totranslate = true;
############ TRANSLATION-JOB
if($totranslate){
$twoLeggedAuth->setScopes( [ 'data:read', 'data:write', 'data:create' ] );
$twoLeggedAuth->fetchToken();
$apiInstance = new Autodesk\Forge\Client\Api\DerivativesApi( $twoLeggedAuth );
$jobInput = array(
'urn' => $correctObject
);
$jobPayloadInput = new Autodesk\Forge\Client\Model\JobPayloadInput( $jobInput );
$jobOutputItem = array(
'type' => 'svf',
'views' => array('3d', '2d')
);
$jobPayloadItem = new Autodesk\Forge\Client\Model\JobPayloadItem( $jobOutputItem );
$jobOutput = [
'formats' => array( $jobPayloadItem )
];
$jobPayloadOutput = new Autodesk\Forge\Client\Model\JobPayloadOutput( $jobOutput );
$job = new \Autodesk\Forge\Client\Model\JobPayload();
$job->setInput( $jobPayloadInput );
$job->setOutput( $jobPayloadOutput );
$x_ads_force = true;
try {
$result = $apiInstance->translate( $job, $x_ads_force );
$erg['success'] = 'Success! ';
} catch( Exception $e ) {
$erg['failure'] = 'Exception when calling DerivativesApi->translate: ' . $e->getMessage();
}
}
$twoLeggedAuth->setScopes( [ 'data:read' ] );
$twoLeggedAuth->fetchToken();
$apiInstance = new Autodesk\Forge\Client\Api\DerivativesApi( $twoLeggedAuth );
try {
$result = $apiInstance->getManifest( $correctObject, null );
$erg['translationstatus'] = 'Translation Status: ' . $result['status'];
$erg['translationprogress'] = "\t\nTranslation Progress: " . $result['progress'];
} catch( Exception $e ) {
$erg['failure'] = 'Exception when calling DerivativesApi->getManifest: ' . $e->getMessage();
}
感谢您的有用提示,我找到了解决方案。
该错误似乎是一个错误,因为 ManifestChildren.role 的新角色是在没有在模型中声明 bee 的情况下定义的。
PROPERTYDB -> Autodesk.CloudPlatform.PropertyDatabase(例如缺少一个 'role')
作为解决方法(对我有用)只需将 getManifest() 的参数 "accept_encoding" 设置为 'gzip':
$result = $apiInstance->getManifest( $correctObject, 'gzip' );
现在一切正常。
查看 here 了解更多信息。