C#开发BIMFACE系列14 服务端API之批量获取转换状态详情
上一篇《C#开发BIMFACE系列13 服务端API之获取转换状态》中介绍了根据文件ID查询单个文件的转换状态。
本文介绍批量获取转换状态详情。
请求地址:POST https://api.bimface.com/translateDetails
说明:应用发起转换以后,可以根据筛选条件,通过该接口批量查询转换状态详情
参数:
请求 path(示例):https://api.bimface.com/translateDetails
请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"
请求 body(示例):
{
"appKey" : "appKey", //必填
"endDate" : "string",
"fileId" : ,
"fileName" : "fileName",
"pageNo" : ,
"pageSize" : ,
"sortType" : "sortType",
"sourceId" : "d4649ee227e345c8b7f0022342247dec",
"startDate" : "string",
"status" : ,
"suffix" : "suffix"
}
HTTP响应示例(200):application/octet-stream
{
"code" : "success",
"data" : {
"list" : [ {
"appKey" : "appKey",
"cost" : ,
"createTime" : "createTime",
"databagId" : "498bc694854244abab728b20620cbaf9",
"fileId" : ,
"length" : ,
"name" : "name",
"offlineDatabagStatus" : "offlineDatabagStatus",
"priority" : ,
"reason" : "reason",
"retry" : true,
"shareToken" : "shareToken",
"shareUrl" : "shareUrl",
"sourceId" : "d69620720c63480c9f4808bf442ed96a",
"status" : "status",
"supportOfflineDatabag" : true,
"thumbnail" : [ "string" ],
"type" : "type"
} ],
"page" : {
"htmlDisplay" : "string",
"nextPage" : ,
"pageNo" : ,
"pageSize" : ,
"prePage" : ,
"startIndex" : ,
"totalCount" : ,
"totalPages" :
}
},
"message" : ""
}
请求体参数说明:
经过测试验证,其中 appKey 是必填项,其余参数非必填。
对应封装的请求实体类为:
/// <summary>
/// 批量获取转换状态详情的请求数据
/// </summary>
[Serializable]
public class TranslateQueryRequest
{
public TranslateQueryRequest()
{
FileId = null;
Suffix = null;
FileName = null;
SourceId = null;
PageNo = null;
PageSize = null;
Status = null;
SortType = null;
StartDate = null;
EndDate = null;
} /// <summary>
/// 【必填项】应用的 appKey
/// </summary>
[JsonProperty("appKey")]
public string AppKey { get; set; } /// <summary>
/// 【非必填项】单模型对应的id,例如:1216871503527744
/// </summary>
[JsonProperty("fileId", NullValueHandling = NullValueHandling.Ignore)]
public string FileId { get; set; } /// <summary>
/// 【非必填项】单模型的文件类型。例如:rvt(或者igms,dwg…)
/// </summary>
[JsonProperty("suffix", NullValueHandling = NullValueHandling.Ignore)]
public string Suffix { get; set; } /// <summary>
/// 【非必填项】单模型的名称。例如:translate-test
/// </summary>
[JsonProperty("fileName", NullValueHandling = NullValueHandling.Ignore)]
public string FileName { get; set; } /// <summary>
/// 【非必填项】模型对应的sourceId。例如:389c28de59ee62e66a7d87ec12692a76
/// </summary>
[JsonProperty("sourceId", NullValueHandling = NullValueHandling.Ignore)]
public string SourceId { get; set; } /// <summary>
/// 【非必填项】页码
/// </summary>
[JsonProperty("pageNo",NullValueHandling = NullValueHandling.Ignore)]
public int? PageNo { get; set; } /// <summary>
/// 【非必填项】每页返回数目
/// </summary>
[JsonProperty("pageSize", NullValueHandling = NullValueHandling.Ignore)]
public int? PageSize { get; set; } /// <summary>
/// 【非必填项】模型状态码。1(处理中) 99(成功) -1(失败)
/// </summary>
[JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
public short? Status { get; set; } /// <summary>
/// 【非必填项】筛选类型
/// </summary>
[JsonProperty("sortType", NullValueHandling = NullValueHandling.Ignore)]
public string SortType { get; set; } /// <summary>
/// 【非必填项】开始日期。例如:2019-05-01
/// </summary>
[JsonProperty("startDate", NullValueHandling = NullValueHandling.Ignore)]
public string StartDate { get; set; } /// <summary>
/// 【非必填项】截止日期。例如:2019-05-03
/// </summary>
[JsonProperty("endDate", NullValueHandling = NullValueHandling.Ignore)]
public string EndDate { get; set; }
}
C#实现方法:
/// <summary>
/// 批量获取转换状态详情
/// </summary>
/// <param name="accessToken">令牌</param>
/// <param name="request">请求体参数对象</param>
/// <returns></returns>
public virtual FileTranslateDetailsResponse GetFileTranslateDetails(string accessToken, TranslateQueryRequest request)
{
// POST https://api.bimface.com/translateDetails
string url = string.Format(BimfaceConstants.API_HOST + "/translateDetails"); BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
headers.AddOAuth2Header(accessToken); string data = request.SerializeToJson(); try
{
FileTranslateDetailsResponse response; HttpManager httpManager = new HttpManager(headers);
HttpResult httpResult = httpManager.Post(url,data);
if (httpResult.Status == HttpResult.STATUS_SUCCESS)
{
response = httpResult.Text.DeserializeJsonToObject<FileTranslateDetailsResponse>();
}
else
{
response = new FileTranslateDetailsResponse
{
Message = httpResult.RefText
};
} return response;
}
catch (Exception ex)
{
throw new Exception("[批量获取转换状态详情]发生异常!", ex);
}
}
其中调用到的 httpManager.Post() 方法,请参考《C# HTTP系列》

调用上面的GetFileTranslateDetails()方法测试批量查询转换状态:

测试代码如下:
// 批量获取转换状态详情
protected void btnGetFileTranslateDetails_Click(object sender, EventArgs e)
{
TranslateQueryRequest request = new TranslateQueryRequest
{
AppKey = _appKey //必填项
}; FileConvertApi api = new FileConvertApi();
FileTranslateDetailsResponse response = api.GetFileTranslateDetails(txtAccessToken.Text, request); txtResult.Text = response.Code.ToString2()
+ Environment.NewLine
+ response.Message.ToString2()
+ Environment.NewLine
+ response.Data.ToString2();
}
返回的结果实体类如下:
/// <summary>
/// 批量获取转换状态详情返回的结果类
/// </summary>
[Serializable]
public class FileTranslateDetailsResponse : GeneralResponse<FileTranslateDetailsEntity>
{ }
[Serializable]
public class FileTranslateDetailsEntity
{
[JsonProperty("list")]
public Detail[] Details { get; set; } [JsonProperty("page")]
public Page Page { get; set; } /// <summary>返回表示当前对象的字符串。</summary>
/// <returns>表示当前对象的字符串。</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
if (Details != null && Details.Length > )
{
for (var i = ; i < Details.Length; i++)
{
Detail detail = Details[i]; StringBuilder sbThumbnails = new StringBuilder();
string[] thumbnails = detail.Thumbnails;
if (thumbnails != null && thumbnails.Length > )
{
foreach (var thumbnail in thumbnails)
{
sbThumbnails.Append(thumbnail + ";");
}
} sb.AppendLine(String.Format("\r\nDetail{0}\r\nappKey={1}, cost={2}, createTime={3}, databagId={4}, fileId={5}, length={6}, name={7}, "
+ "offlineDatabagStatus={8}, priority={9}, reason={10}, retry={11}, shareToken={12}, shareUrl={13}, sourceId={14}, status={15}, supportOfflineDatabag={16}, "
+ "type={17}, thumbnails={18}",
(i + ), detail.AppKey, detail.Cost, detail.CreateTime, detail.DatabagId, detail.FileId, detail.Length, detail.Name,
detail.OfflineDatabagStatus, detail.Priority, detail.Reason, detail.Retry, detail.ShareToken, detail.ShareUrl, detail.SourceId, detail.Status, detail.SupportOfflineDatabag,
detail.Type, sbThumbnails));
}
} sb.AppendLine("\r\npage");
sb.AppendLine(string.Format("prePage={0}, nextPage={1}, pageNo={2}, pageSize={3}, startIndex={4}, totalCount={5}, totalPages={6}",
Page.PrePage, Page.NextPage, Page.PageNo, Page.PageSize, Page.StartIndex, Page.TotalCount, Page.TotalPages)); return string.Format("FileTranslateDetailsEntity [\r\n{0}\r\n]", sb);
}
}
/// <summary>
/// 转换状态详情
/// </summary>
[Serializable]
public class Detail
{
/// <summary>
/// 应用的 appkey
/// </summary>
[JsonProperty("appKey")]
public string AppKey { get; set; } /// <summary>
/// 任务耗时(单位:秒)
/// </summary>
[JsonProperty("cost")]
public int Cost { get; set; } /// <summary>
/// 创建时间
/// </summary>
[JsonProperty("createTime")]
public string CreateTime { get; set; } /// <summary>
/// 数据包id。例如:70b8c10b686061525420fc240bf48aca
/// </summary>
[JsonProperty("databagId")]
public string DatabagId { get; set; } /// <summary>
/// 模型的fileId。例如:1609858191716512
/// </summary>
[JsonProperty("fileId")]
public long? FileId { get; set; } /// <summary>
/// 文件长度(单位:字节)
/// </summary>
[JsonProperty("length")]
public long? Length { get; set; } /// <summary>
/// 集成模型的名称,例如:integrate-test
/// </summary>
[JsonProperty("name")]
public string Name { get; set; } /// <summary>
/// 离线数据包生成状态:prepare(未生成) processing(生成中) success(生成成功) failed(生成失败)
/// </summary>
[JsonProperty("offlineDatabagStatus")]
public string OfflineDatabagStatus { get; set; } /// <summary>
/// 任务优先级。 数字越大,优先级越低。1, 2, 3。
/// </summary>
[JsonProperty("priority")]
public short? Priority { get; set; } /// <summary>
/// 若转换失败,返回失败原因。转换成功时,返回空字符串
/// </summary>
[JsonProperty("reason")]
public string Reason { get; set; } /// <summary>
/// 重试,true(或者false)
/// </summary>
[JsonProperty("retry")]
public bool? Retry { get; set; } /// <summary>
/// 分享码。例如:3c476c55
/// </summary>
[JsonProperty("shareToken")]
public string ShareToken { get; set; } /// <summary>
/// 分享链接。例如:https://api.bimface.com/preview/3c476c55
/// </summary>
[JsonProperty("shareUrl")]
public string ShareUrl { get; set; } /// <summary>
/// 模型对应的sourceId。该字段暂时空置
/// </summary>
[JsonProperty("sourceId")]
public string SourceId { get; set; } /// <summary>
/// 模型状态,processing(处理中) success(成功) failed(失败)
/// </summary>
[JsonProperty("status")]
public string Status { get; set; } /// <summary>
/// 是否支持离线数据包,true(或者false)
/// </summary>
[JsonProperty("supportOfflineDatabag")]
public bool? SupportOfflineDatabag { get; set; } /// <summary>
/// 模型的缩略图,该字段暂时空置
/// </summary>
[JsonProperty("thumbnail")]
public string[] Thumbnails { get; set; } /// <summary>
/// 转换类型。例如:rvt-translate(或者igms-translate…)
/// </summary>
[JsonProperty("type")]
public string Type { get; set; }
}
/// <summary>
/// 返回总记录的分页信息
/// </summary>
[Serializable]
public class Page
{
/// <summary>
/// 下一页码
/// </summary>
[JsonProperty("nextPage")]
public int NextPage { get; set; } /// <summary>
/// 当前页码
/// </summary>
[JsonProperty("pageNo")]
public int PageNo { get; set; } /// <summary>
/// 每页条目数
/// </summary>
[JsonProperty("pageSize")]
public int PageSize { get; set; } /// <summary>
/// 上一页码
/// </summary>
[JsonProperty("prePage")]
public int PrePage { get; set; } /// <summary>
/// 起始索引数
/// </summary>
[JsonProperty("startIndex")]
public int StartIndex { get; set; } /// <summary>
/// 条目总数
/// </summary>
[JsonProperty("totalCount")]
public int TotalCount { get; set; } /// <summary>
/// 页码总数
/// </summary>
[JsonProperty("totalPages")]
public int TotalPages { get; set; }
}
C#开发BIMFACE系列14 服务端API之批量获取转换状态详情的更多相关文章
- C#开发BIMFACE系列40 服务端API之模型集成
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 随着建筑信息化模型技术的发展,越来越多的人选择在云端浏览建筑模型.现阶段的云端模型浏览大多是基于文件级别,一次只可以浏览一 ...
- C#开发BIMFACE系列41 服务端API之模型对比
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在建筑施工图审查系统中,设计单位提交设计完成的模型/图纸,审查专家审查模型/图纸.审查过程中如果发现不符合规范的地方,则流 ...
- C#开发BIMFACE系列42 服务端API之图纸对比
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在我的前一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>中详细介绍了BIMFACE服务端接口 ...
- C#开发BIMFACE系列43 服务端API之图纸拆分
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在上一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>的最后留了一个问题,在常规业务场景下,一 ...
- C#开发BIMFACE系列44 服务端API之计算图纸对比差异项来源自哪个图框
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在前两篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>.<C#开发BIMFACE系列43 ...
- C#开发BIMFACE系列46 服务端API之离线数据包下载及结构详解
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列45 服务端API之创建离线数据包>中通过调用接口成功的创建一个离线数 ...
- C#开发BIMFACE系列6 服务端API之获取文件信息
在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务 ...
- C#开发BIMFACE系列4 服务端API之源上传文件
在注册成为BIMFACE的应用开发者后,要能在浏览器里浏览你的模型或者获取你模型内的BIM数据, 首先需要把你的模型文件上传到BIMFACE.根据不同场景,BIMFACE提供了丰富的文件相关的接口. ...
- C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken
系列目录 [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE ...
随机推荐
- Unity3D热更新之LuaFramework篇[08]--热更新原理及热更服务器搭建
前言 前面铺垫了这么久,终于要开始写热更新了. Unity游戏热更新包含两个方面,一个是资源的更新,一个是脚本的更新. 资源更新是Unity本来就支持的,在各大平台也都能用.而脚本的热更新在iOS平台 ...
- python查漏补缺 --- 模块及异常
1.方法定义好之后,如,def test(x) : ,此时将方法名赋值给一个新的变量,那么该变量等同于方法,可以具备test方法内部的全部功能2.导包的时候,可以使用as关键字在不同的名称下导入模块或 ...
- let和const解构赋值
1.let和const:最基础也很容易理解的,let是 声明一个变量,const是声明一个常量. 具体细节看如下实例代码 { let a=; console.log(a) } // console.l ...
- 【Android】INSTALL_FAILED_UPDATE_INCOMPATIBLE
多是因为已经安装过该 apk 文件了,一般卸载了重新运行就 OK 了.
- WPF滑块控件(Slider)的自定义样式
前言 每次开发滑块控件的样式都要花很久去读样式代码,感觉有点记不牢,所以特此备忘. 自定义滑块样式 首先创建项目,添加Slider控件. 然后获取Slider的Window样式,如下图操作. 然后弹出 ...
- 前端笔记之React(五)Redux深入浅出
一.Redux整体感知 Redux是JavaScript状态管理容器,提供了可被预测状态的状态管理容器.来自于Flux思想,Facebook基于Flux思想,在2015年推出Redux库. 中文网站: ...
- win10去除快捷方式小箭头
切忌删除注册表项: HKEY_CLASSES_ROOT -> lnkfile -> IsShortcut 这个方法以前是可以的,但是在2018年之后更新的系统就会出现任务栏图标打不开的情况 ...
- 数字麦克风PDM信号采集与STM32 I2S接口应用
数字麦克风采用MEMS技术,将声波信号转换为数字采样信号,由单芯片实现采样量化编码,一般而言数字麦克风的输出有PDM麦克风和PCM麦克风,由于PDM麦克风结构.工艺简单而大量应用,在使用中要注意这二者 ...
- Linux : 性能监测相关命令
[参考文章]:Linux命令大全 [参考文章]:Linux 运行进程实时监控pidstat命令详解 1. 进程级别的监测命令 1.1 top top命令可以实时动态地查看系统的整体运行情况,是一个综 ...
- jquery EasyUi 添加节点、展开所有节点、默认选中第一个节点
感觉easyUi 的树用起来不如 Ext 的树方便,首先,root节点不太好自定义, 异步加载时,只能通过后台判断生成root节点,但是这样一来有一个问题,就是第一次访问界面时, 树的初始化比较慢,大 ...