C#开发BIMFACE系列13 服务端API之获取转换状态
在《C#开发BIMFACE系列12 服务端API之文件转换》中详细介绍了7种文件转换的方法。发起源文件/模型转换后,转换过程可能成功也可能失败。那么在这种情况下就需要查询源文件/模型的转换状态。一共有三种方式可以知道转换是否成功。
第一种:调用文件转换接口 https://api.bimface.com/translate,该接口的返回结果中包含转换结果信息。
第二种:调用文件转换接口 https://api.bimface.com/translate,由于转换不能立即完成,BIMFace支持在文件转换完成以后,通过Callback机制通知应用,在Callbak返回结果中包含了转换结果信息。
第三种就是本篇要介绍通过接口查询转换状态。
请求地址:GET https://api.bimface.com/translate
说明:应用发起转换以后,可以通过该接口查询转换状态
参数:
请求 path(示例):https://api.bimface.com/translate?fileId=857482189666208
请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"
HTTP响应示例(200):
{
"code" : "success",
"data" : {
"createTime" : "2017-12-25 17:23:46",
"databagId" : "9b711803a43b92d871cde346b63e5019",
"fileId" : ,
"name" : "bimface_2018.rvt",
"priority" : ,
"reason" : "reason",
"status" : "success",
"thumbnail" : [ "https://m.bimface.com/9b711803a43b92d871cde346b63e5019/thumbnail/96.png", "https://m.bimface.com/9b711803a43b92d871cde346b63e5019/thumbnail/256.png" ]
},
"message" : ""
}
C#实现方法:
/// <summary>
/// 获取转换状态(应用发起转换以后,可以通过该接口查询转换状态)
/// </summary>
/// <param name="accessToken">令牌</param>
/// <param name="fileId"></param>
/// <returns></returns>
public virtual FileTranslateResponse GetFileTranslateStatus(string accessToken, long fileId)
{
//GET https://api.bimface.com/translate
string url = string.Format(BimfaceConstants.API_HOST + "/translate?fileId={0}", fileId); BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
headers.AddOAuth2Header(accessToken); try
{
FileTranslateResponse response; HttpManager httpManager = new HttpManager(headers);
HttpResult httpResult = httpManager.Get(url);
if (httpResult.Status == HttpResult.STATUS_SUCCESS)
{
response = httpResult.Text.DeserializeJsonToObject<FileTranslateResponse>();
}
else
{
response = new FileTranslateResponse
{
Message = httpResult.RefText
};
} return response;
}
catch (Exception ex)
{
throw new Exception("[获取转换状态]发生异常!", ex);
}
}
其中调用到的 httpManager.Get() 方法,请参考《C# HTTP系列》
以“rac_advanced_sample_project-三维视图 - From Parking Area.dwg”为例,查询其转换的状态信息
// 获取转换状态
protected void btnGetFileTranslateStatus_Click(object sender, EventArgs e)
{
long fileId = txtFileID.Text.Trim().ToLong();
FileConvertApi api = new FileConvertApi();
FileTranslateResponse response = api.GetFileTranslateStatus(txtAccessToken.Text, fileId); txtResult.Text = response.Code.ToString2()
+ Environment.NewLine
+ response.Message.ToString2()
+ Environment.NewLine
+ response.Data.ToString2();
}
返回的转换结果类FileTranslateResponse如下:
/// <summary>
/// 文件转换返回的结果类
/// </summary>
[Serializable]
public class FileTranslateResponse : GeneralResponse<FileTranslateEntity>
{ } [Serializable]
public class FileTranslateEntity
{
/// <summary>
/// 文件转换完成的时间
/// </summary>
[JsonProperty("createTime")]
public DateTime? CreateTime { get; set; } [JsonProperty("databagId")]
public string DatabagId { get; set; } [JsonProperty("fileId")]
public long? FileId { get; set; } /// <summary>
/// 文件的名称,包括后缀
/// </summary>
[JsonProperty("name")]
public string Name { get; set; } /// <summary>
/// 优先级,数字越大,优先级越低。1, 2, 3
/// </summary>
[JsonProperty("priority")]
public int? Priority { get; set; } /// <summary>
/// 若转换失败,则返回失败原因
/// </summary>
[JsonProperty("reason")]
public string Reason { get; set; } /// <summary>
/// 转换的状态
/// </summary>
[JsonProperty("status")]
public string Status { get; set; } /// <summary>
/// 缩略图
/// </summary>
[JsonProperty("thumbnail")]
public string[] Thumbnails { get; set; } /// <summary>返回表示当前对象的字符串。</summary>
/// <returns>表示当前对象的字符串。</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
if(Thumbnails != null && Thumbnails.Length > )
{
foreach(string thumbnail in Thumbnails)
{
sb.AppendLine(thumbnail);
}
} return string.Format("FileTranslateEntity [createTime={0}, fileId={1}, name={2}, priority={3},reason={4},status={5},thumbnail={6}]",
CreateTime, FileId, Name, Priority, Reason, Status, sb.ToString());
}
}
C#开发BIMFACE系列13 服务端API之获取转换状态的更多相关文章
- C#开发BIMFACE系列7 服务端API之获取文件信息列表
系列目录 [已更新最新开发文章,点击查看详细] 本文详细介绍如何获取BIMFACE平台中所有上传过的文件信息列表. 请求地址:GET https://file.bimface.com/file ...
- C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken
系列目录 [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE ...
- C#开发BIMFACE系列8 服务端API之获取文件上传状态信息
系列目录 [已更新最新开发文章,点击查看详细] 在BIMFACE控制台上传文件,上传过程及结束后它会自动告诉你文件的上传状态,目前有三种状态:uploading,success,failure ...
- C#开发BIMFACE系列9 服务端API之获取应用支持的文件类型
系列目录 [已更新最新开发文章,点击查看详细] BIMFACE最核心能力之一是工程文件格式转换.无需安装插件,支持数十种工程文件格式在云端转换,完整保留原始文件信息.开发者将告别原始文件解析烦 ...
- C#开发BIMFACE系列10 服务端API之获取文件下载链接
系列目录 [已更新最新开发文章,点击查看详细] 通过BIMFACE控制台或者调用服务接口上传文件成功后,默认场景下需要下载该源文件,下载文件一般需要知道文件的下载链接即可.BIMACE平台提供 ...
- C#开发BIMFACE系列17 服务端API之获取模型数据2:获取构件材质列表
系列目录 [已更新最新开发文章,点击查看详细] 在上一篇<C#开发BIMFACE系列16 服务端API之获取模型数据1:查询满足条件的构件ID列表>中介绍了获取单文件(模型)的所有 ...
- C#开发BIMFACE系列18 服务端API之获取模型数据3:获取构件属性
系列目录 [已更新最新开发文章,点击查看详细] 本篇主要介绍如何获取单文件/模型下单个构建的属性信息. 请求地址:GET https://api.bimface.com/data/v2/fil ...
- C#开发BIMFACE系列19 服务端API之获取模型数据4:获取多个构件的共同属性
系列目录 [已更新最新开发文章,点击查看详细] 在前几篇博客中介绍了一个三维文件/模型包含多个构建,每个构建又是由多种材质组成,每个构建都有很多属性.不同的构建也有可能包含相同的属性. 上图中 ...
- C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模型的楼层信息
系列目录 [已更新最新开发文章,点击查看详细] 一个文件/模型中可能包含多个楼层信息,获取楼层信息对于前端页面的动态展示非常有帮助.本篇介绍获取一个文件/模型中可能包含多个楼层信息的详细方法. ...
随机推荐
- python基础——字符串(string)
字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可. str1 = 'python' str2 = " ...
- 快速清理maven仓库中下载错误的文件
有时候使用pom文件下载依赖文件的时候突然网络异常,可能会出现依赖文件出现破损,导致怎么都不能使用,也没有重新下载. 之前解决办法是找到出现破损的文件并删除,让其重新下载,但是这样效率很低,也很难找到 ...
- D3学习之画布制作
最近大半个月都和d3斗争,学习艰辛(呜呜……)如果觉得作者写的对你有用,可以打赏作者哦!owo 起言:结合自己的学习之路,我认为要想使用d3画图搞清楚布局很重要,层次分明,就给了你很大的灵活性,写起代 ...
- .net RabbitMQ 介绍、安装、运行
RabbitMQ介绍 什么是MQ Message Queue(简称:MQ),消息队列 顾名思义将内容存入到队列中,存入取出的原则是先进先出.后进后出. 其主要用途:不同进程Process/线程Thre ...
- bootstrap开发响应式网页的常用的一些 类的说明
1.navbar-导航条 1.navbar-fixed-top,让导航条固定显示在页面上部(注意:固定的导航条会遮住代码,解决方案,给body设置padding-top的值[大于或等于]为我们导航条的 ...
- git远程服务器回滚
1.git log查找commit hash 2.git reset --hard hash 回滚本地git库 3.git push -f origin(git仓库的url) branch名 强制提交
- 原创:用node.js搭建本地服务模拟接口访问实现数据模拟
前端开发中,数据模拟是必要的,这样就能等后台接口写完,我们直接把接口请求的url地址从本地数据模拟url换成后台真实地址就完成项目了.传参之类的都不用动. 之前网上找了很多类似于mock等感觉都不太实 ...
- Linux内容点(部分)
文件属性 -w 文件或目录,对目前(有效的)用户或组来说是可写的 -x 文件或目录,对目前(有效的)用户或组来说是可执行的 -o 文件或目录, ...
- pod指定node运行
1.给node打上label kubectl label nodes cn-hongkong.i-j6c5pm0b59y9kaos565o apptype=monitoring 2.查看结果kubec ...
- 【0809 | Day 12】可变长参数/函数的对象/函数的嵌套/名称空间与作用域
可变长参数 一.形参 位置形参 默认形参 二.实参 位置实参 关键字实参 三.可变长参数之* def func(name,pwd,*args): print('name:',name,'pwd:',p ...