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" : 0,
  "fileName" : "fileName",
  "pageNo" : 0,
  "pageSize" : 0,
  "sortType" : "sortType",
  "sourceId" : "d4649ee227e345c8b7f0022342247dec",
  "startDate" : "string",
  "status" : 0,
  "suffix" : "suffix"
}

HTTP响应示例(200):application/octet-stream

{
  "code" : "success",
  "data" : {
    "list" : [ {
      "appKey" : "appKey",
      "cost" : 0,
      "createTime" : "createTime",
      "databagId" : "498bc694854244abab728b20620cbaf9",
      "fileId" : 0,
      "length" : 0,
      "name" : "name",
      "offlineDatabagStatus" : "offlineDatabagStatus",
      "priority" : 0,
      "reason" : "reason",
      "retry" : true,
      "shareToken" : "shareToken",
      "shareUrl" : "shareUrl",
      "sourceId" : "d69620720c63480c9f4808bf442ed96a",
      "status" : "status",
      "supportOfflineDatabag" : true,
      "thumbnail" : [ "string" ],
      "type" : "type"
    } ],
    "page" : {
      "htmlDisplay" : "string",
      "nextPage" : 0,
      "pageNo" : 0,
      "pageSize" : 0,
      "prePage" : 0,
      "startIndex" : 0,
      "totalCount" : 0,
      "totalPages" : 0
    }
  },
  "message" : ""
}

请求体参数说明:

经过测试验证,其中 appKey 是必填项,其余参数非必填。

对应封装的请求实体类为:

 1 /// <summary>
 2 ///  批量获取转换状态详情的请求数据
 3 /// </summary>
 4 [Serializable]
 5 public class TranslateQueryRequest
 6 {
 7     public TranslateQueryRequest()
 8     {
 9         FileId = null;
10         Suffix = null;
11         FileName = null;
12         SourceId = null;
13         PageNo = null;
14         PageSize = null;
15         Status = null;
16         SortType = null;
17         StartDate = null;
18         EndDate = null;
19     }
20
21     /// <summary>
22     /// 【必填项】应用的 appKey
23     /// </summary>
24     [JsonProperty("appKey")]
25     public string AppKey { get; set; }
26
27     /// <summary>
28     /// 【非必填项】单模型对应的id,例如:1216871503527744
29     /// </summary>
30     [JsonProperty("fileId", NullValueHandling = NullValueHandling.Ignore)]
31     public string FileId { get; set; }
32
33     /// <summary>
34     /// 【非必填项】单模型的文件类型。例如:rvt(或者igms,dwg…?)
35     /// </summary>
36     [JsonProperty("suffix", NullValueHandling = NullValueHandling.Ignore)]
37     public string Suffix { get; set; }
38
39     /// <summary>
40     /// 【非必填项】单模型的名称。例如:translate-test
41     /// </summary>
42     [JsonProperty("fileName", NullValueHandling = NullValueHandling.Ignore)]
43     public string FileName { get; set; }
44
45     /// <summary>
46     /// 【非必填项】模型对应的sourceId。例如:389c28de59ee62e66a7d87ec12692a76
47     /// </summary>
48     [JsonProperty("sourceId", NullValueHandling = NullValueHandling.Ignore)]
49     public string SourceId { get; set; }
50
51     /// <summary>
52     /// 【非必填项】页码
53     /// </summary>
54     [JsonProperty("pageNo",NullValueHandling = NullValueHandling.Ignore)]
55     public int? PageNo { get; set; }
56
57     /// <summary>
58     /// 【非必填项】每页返回数目
59     /// </summary>
60     [JsonProperty("pageSize", NullValueHandling = NullValueHandling.Ignore)]
61     public int? PageSize { get; set; }
62
63     /// <summary>
64     /// 【非必填项】模型状态码。1(处理中) 99(成功) -1(失败)
65     /// </summary>
66     [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
67     public short? Status { get; set; }
68
69     /// <summary>
70     /// 【非必填项】筛选类型
71     /// </summary>
72     [JsonProperty("sortType", NullValueHandling = NullValueHandling.Ignore)]
73     public string SortType { get; set; }
74
75     /// <summary>
76     /// 【非必填项】开始日期。例如:2019-05-01
77     /// </summary>
78     [JsonProperty("startDate", NullValueHandling = NullValueHandling.Ignore)]
79     public string StartDate { get; set; }
80
81     /// <summary>
82     /// 【非必填项】截止日期。例如:2019-05-03
83     /// </summary>
84     [JsonProperty("endDate", NullValueHandling = NullValueHandling.Ignore)]
85     public string EndDate { get; set; }
86 }

C#实现方法:

 1 /// <summary>
 2 /// 批量获取转换状态详情
 3 /// </summary>
 4 /// <param name="accessToken">令牌</param>
 5 /// <param name="request">请求体参数对象</param>
 6 /// <returns></returns>
 7 public virtual FileTranslateDetailsResponse GetFileTranslateDetails(string accessToken, TranslateQueryRequest request)
 8 {
 9     // POST https://api.bimface.com/translateDetails
10     string url = string.Format(BimfaceConstants.API_HOST + "/translateDetails");
11
12     BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
13     headers.AddOAuth2Header(accessToken);
14
15     string data = request.SerializeToJson();
16
17     try
18     {
19         FileTranslateDetailsResponse response;
20
21         HttpManager httpManager = new HttpManager(headers);
22         HttpResult httpResult = httpManager.Post(url,data);
23         if (httpResult.Status == HttpResult.STATUS_SUCCESS)
24         {
25             response = httpResult.Text.DeserializeJsonToObject<FileTranslateDetailsResponse>();
26         }
27         else
28         {
29             response = new FileTranslateDetailsResponse
30             {
31                 Message = httpResult.RefText
32             };
33         }
34
35         return response;
36     }
37     catch (Exception ex)
38     {
39         throw new Exception("[批量获取转换状态详情]发生异常!", ex);
40     }
41 }

其中调用到的 httpManager.Post() 方法,请参考《C# HTTP系列》

测试

在BIMFACE的控制台中可以看到我们上传的文件列表,共计2个文件。模型状态均为转换成功。

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

测试代码如下:

 1 // 批量获取转换状态详情
 2 protected void btnGetFileTranslateDetails_Click(object sender, EventArgs e)
 3 {
 4     TranslateQueryRequest request = new TranslateQueryRequest
 5     {
 6         AppKey = _appKey  //必填项
 7     };
 8
 9     FileConvertApi api = new FileConvertApi();
10     FileTranslateDetailsResponse response = api.GetFileTranslateDetails(txtAccessToken.Text, request);
11
12     txtResult.Text = response.Code.ToString2()
13                    + Environment.NewLine
14                    + response.Message.ToString2()
15                    + Environment.NewLine
16                    + response.Data.ToString2();
17 }

返回的结果实体类如下:

1 /// <summary>
2 ///  批量获取转换状态详情返回的结果类
3 /// </summary>
4 [Serializable]
5 public class FileTranslateDetailsResponse : GeneralResponse<FileTranslateDetailsEntity>
6 {
7
8 }
 1 [Serializable]
 2 public class FileTranslateDetailsEntity
 3 {
 4     [JsonProperty("list")]
 5     public Detail[] Details { get; set; }
 6
 7     [JsonProperty("page")]
 8     public Page Page { get; set; }
 9
10     /// <summary>返回表示当前对象的字符串。</summary>
11     /// <returns>表示当前对象的字符串。</returns>
12     public override string ToString()
13     {
14         StringBuilder sb = new StringBuilder();
15         if (Details != null && Details.Length > 0)
16         {
17             for (var i = 0; i < Details.Length; i++)
18             {
19                 Detail detail = Details[i];
20
21                 StringBuilder sbThumbnails = new StringBuilder();
22                 string[] thumbnails = detail.Thumbnails;
23                 if (thumbnails != null && thumbnails.Length > 0)
24                 {
25                     foreach (var thumbnail in thumbnails)
26                     {
27                         sbThumbnails.Append(thumbnail + ";");
28                     }
29                 }
30
31                 sb.AppendLine(String.Format("\r\nDetail{0}\r\nappKey={1}, cost={2}, createTime={3}, databagId={4}, fileId={5}, length={6}, name={7}, "
32                                           + "offlineDatabagStatus={8}, priority={9}, reason={10}, retry={11}, shareToken={12}, shareUrl={13}, sourceId={14}, status={15}, supportOfflineDatabag={16}, "
33                                           + "type={17}, thumbnails={18}",
34                                             (i + 1), detail.AppKey, detail.Cost, detail.CreateTime, detail.DatabagId, detail.FileId, detail.Length, detail.Name,
35                                             detail.OfflineDatabagStatus, detail.Priority, detail.Reason, detail.Retry, detail.ShareToken, detail.ShareUrl, detail.SourceId, detail.Status, detail.SupportOfflineDatabag,
36                                             detail.Type, sbThumbnails));
37             }
38         }
39
40         sb.AppendLine("\r\npage");
41         sb.AppendLine(string.Format("prePage={0}, nextPage={1}, pageNo={2}, pageSize={3}, startIndex={4}, totalCount={5}, totalPages={6}",
42                                     Page.PrePage, Page.NextPage, Page.PageNo, Page.PageSize, Page.StartIndex, Page.TotalCount, Page.TotalPages));
43
44         return string.Format("FileTranslateDetailsEntity [\r\n{0}\r\n]", sb);
45     }
46 }
  1 /// <summary>
  2 /// 转换状态详情
  3 /// </summary>
  4 [Serializable]
  5 public class Detail
  6 {
  7     /// <summary>
  8     ///  应用的 appkey
  9     /// </summary>
 10     [JsonProperty("appKey")]
 11     public string AppKey { get; set; }
 12
 13     /// <summary>
 14     /// 任务耗时(单位:秒)
 15     /// </summary>
 16     [JsonProperty("cost")]
 17     public int Cost { get; set; }
 18
 19     /// <summary>
 20     ///  创建时间
 21     /// </summary>
 22     [JsonProperty("createTime")]
 23     public string CreateTime { get; set; }
 24
 25     /// <summary>
 26     ///  数据包id。例如:70b8c10b686061525420fc240bf48aca
 27     /// </summary>
 28     [JsonProperty("databagId")]
 29     public string DatabagId { get; set; }
 30
 31     /// <summary>
 32     ///  模型的fileId。例如:1609858191716512
 33     /// </summary>
 34     [JsonProperty("fileId")]
 35     public long? FileId { get; set; }
 36
 37     /// <summary>
 38     ///  文件长度(单位:字节)
 39     /// </summary>
 40     [JsonProperty("length")]
 41     public long? Length { get; set; }
 42
 43     /// <summary>
 44     ///  集成模型的名称,例如:integrate-test
 45     /// </summary>
 46     [JsonProperty("name")]
 47     public string Name { get; set; }
 48
 49     /// <summary>
 50     /// 离线数据包生成状态:prepare(未生成) processing(生成中) success(生成成功) failed(生成失败)
 51     /// </summary>
 52     [JsonProperty("offlineDatabagStatus")]
 53     public string OfflineDatabagStatus { get; set; }
 54
 55     /// <summary>
 56     /// 任务优先级。 数字越大,优先级越低。1, 2, 3。
 57     /// </summary>
 58     [JsonProperty("priority")]
 59     public short? Priority { get; set; }
 60
 61     /// <summary>
 62     /// 若转换失败,返回失败原因。转换成功时,返回空字符串
 63     /// </summary>
 64     [JsonProperty("reason")]
 65     public string Reason { get; set; }
 66
 67     /// <summary>
 68     /// 重试,true(或者false)
 69     /// </summary>
 70     [JsonProperty("retry")]
 71     public bool? Retry { get; set; }
 72
 73     /// <summary>
 74     /// 分享码。例如:3c476c55
 75     /// </summary>
 76     [JsonProperty("shareToken")]
 77     public string ShareToken { get; set; }
 78
 79     /// <summary>
 80     /// 分享链接。例如:https://api.bimface.com/preview/3c476c55
 81     /// </summary>
 82     [JsonProperty("shareUrl")]
 83     public string ShareUrl { get; set; }
 84
 85     /// <summary>
 86     /// 模型对应的sourceId。该字段暂时空置
 87     /// </summary>
 88     [JsonProperty("sourceId")]
 89     public string SourceId { get; set; }
 90
 91     /// <summary>
 92     /// 模型状态,processing(处理中) success(成功) failed(失败)
 93     /// </summary>
 94     [JsonProperty("status")]
 95     public string Status { get; set; }
 96
 97     /// <summary>
 98     /// 是否支持离线数据包,true(或者false)
 99     /// </summary>
100     [JsonProperty("supportOfflineDatabag")]
101     public bool? SupportOfflineDatabag { get; set; }
102
103     /// <summary>
104     ///  模型的缩略图,该字段暂时空置
105     /// </summary>
106     [JsonProperty("thumbnail")]
107     public string[] Thumbnails { get; set; }
108
109     /// <summary>
110     /// 转换类型。例如:rvt-translate(或者igms-translate…?)
111     /// </summary>
112     [JsonProperty("type")]
113     public string Type { get; set; }
114 }
 1 /// <summary>
 2 ///  返回总记录的分页信息
 3 /// </summary>
 4 [Serializable]
 5 public class Page
 6 {
 7     /// <summary>
 8     ///  下一页码
 9     /// </summary>
10     [JsonProperty("nextPage")]
11     public int NextPage { get; set; }
12
13     /// <summary>
14     ///  当前页码
15     /// </summary>
16     [JsonProperty("pageNo")]
17     public int PageNo { get; set; }
18
19     /// <summary>
20     ///  每页条目数
21     /// </summary>
22     [JsonProperty("pageSize")]
23     public int PageSize { get; set; }
24
25     /// <summary>
26     ///  上一页码
27     /// </summary>
28     [JsonProperty("prePage")]
29     public int PrePage { get; set; }
30
31     /// <summary>
32     ///  起始索引数
33     /// </summary>
34     [JsonProperty("startIndex")]
35     public int StartIndex { get; set; }
36
37     /// <summary>
38     ///  条目总数
39     /// </summary>
40     [JsonProperty("totalCount")]
41     public int TotalCount { get; set; }
42
43     /// <summary>
44     ///  页码总数
45     /// </summary>
46     [JsonProperty("totalPages")]
47     public int TotalPages { get; set; }
48 }

系列目录     【已更新最新开发文章,点击查看详细】

原文地址:https://www.cnblogs.com/SavionZhang/p/11455795.html

时间: 2024-08-11 12:14:47

C#开发BIMFACE系列14 服务端API之批量获取转换状态详情的相关文章

C#开发BIMFACE系列10 服务端API之获取文件下载链接

通过BIMFACE控制台或者调用服务接口上传文件成功后,默认场景下需要下载该源文件,下载文件一般需要知道文件的下载链接即可.BIMACE平台提供了“获取文件下载链接”的服务接口.下面详细介绍其使用方法. 请求地址:GET https://file.bimface.com/download/url 说明:应用通过该接口获取文件的下载地址,然后下载文件.下载地址有效时间是5分钟. 参数: 请求 path(示例):https://file.bimface.com/download/url?fileId

C#开发BIMFACE系列11 服务端API之源文件删除

通过BIMFACE控制台或者调用服务接口上传文件成功后,如果不再需要该文件,则可以通过BIMFACE平台提供的“源文件删除”服务接口删除具体的文件.下面详细介绍其使用方法. 请求地址:DELETE https://file.bimface.com/file 说明:根据文件ID删除文件 参数: 请求 path(示例):https://file.bimface.com/file?fileId=1418750515413120 请求 header(示例):"Authorization: Bearer

C#开发BIMFACE系列24 服务端API之获取模型数据9:获取单个房间信息

系列目录     [已更新最新开发文章,点击查看详细] 大厦建筑模型中,基本上包含多个楼层,每个楼层包含多个房间等信息.在<C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模型的楼层信息>中介绍了如何获取一个模型中包含的楼层信息.面积分区.房间等信息.本篇主要介绍如何获取单个模型中单个房间信息. 请求地址:GET https://api.bimface.com/data/v2/files/{fileId}/rooms/{roomId} 说明:获取单个模型种单个房间信息 参数

纯正商业级应用-Node.js Koa2开发微信小程序服务端

第1章 前言.导学与node.js如何理解Node.js?前端到底要不要学习Node.js?本课程能让你学到什么? 第2章 Koa2的那点事儿与异步编程模型Koa非常的精简,基本上,没有经过二次开发的Koa根本“不能”用.本章我们讲解Koa的重要特性,理解什么是洋葱模型?以及在KOA中如何进行异步编程?很多同学都了解以上知识点,但听完本章,你会有一些不一样的理解,比如:为什么要有洋葱模型?没有会怎样?Koa中间件一定是异步的吗? ... 第3章 路由系统的改造Koa-router需要进行一些改造

API开发第一篇:关于session的APP服务端API开发

第一次做app的API开发,遇到的第一个问题就是:我的sessionid哪儿去了? 实现的一个功能是:短信验证功能,大体流程图如下: 问题的产生就发生在提交验证的时候,客户端并未通过header头带过来sessionid.那么这个时候,服务端就不知道该从哪一个session会话中取出值来进行判断.所以问题的解决核心点就是这个sessionid哪儿去了?以前只做PC端的时候,从来不怎么关心这个问题,因为浏览器自己就帮我们把这些事情搞完了. 解决办法一: 首先声明这个错误并不是由于服务端的错误,服务

[Axis2与Eclipse整合开发Web Service系列之三] 服务端返回值

前言 在前面的三篇中 [Axis2与Eclipse整合开发Web Service系列之一] 生成Web Service Client(将WSDl 转化成 Java代码) [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端 [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续) 介绍了如何使用 axis2 与 eclipse 的开发web Service .在第

移动APP服务端API设计应该考虑到的问题

转载:http://www.hutuseng.com/article/how-to-design-api 2014年,移动APP的热度丝毫没有减退,怎样为您的移动端app设计良好的服务器端接口(API)呢? 下面谈谈我个人的一些想法. 2014年,移动APP的热度丝毫没有减退,并没有像桌面软件被WEB网站那样所取代,不但如此,越来越多的传统应用.网站也都开始制作自己的移动APP,也就是我们常说的IOS客户端.android客户端.这仿佛又回到了多年前的CS架构,那时候我们用VB.VC.Delph

【转-整理】Java 对外接口开发(http)服务端-客户端

java开发接口利用http协议传输数据 这个接口主要用来登录,java服务器提供一个接口,移动设备客户端(android和ios)能通过这个接口把用户名和密码之类的东东传过来到服务器验证,然后服务器返回数据告诉客户端是否登录成功.比如0是成功,1是失败.中间数据的传递都是通过http协议完成.这个接口该怎么写? 代码1.2为服务器接口,接收到客户端的信息解析验证,并返回需要的信息. 服务端代码: 1 public class TestTransfers extends HttpServlet

度量快速开发平台部署IIS服务端后提示不具备查看该目录和页的权限 ALC

今天在云虚拟机上部署度量快速开发平台服务端后,访问效果如下所示:  提示 不具备查看该目录或页面的权限,因为访问控制列表(ALC)对wrb服务器上的该资源进行了配置. 这个错误,主要是IIS上部署的服务端文件夹访问权限不够引起,只需要把服务端目录安全性设置为 network service用户完全控制即可.如果设置这个用户后仍然不行,则需要把everyone用户设置为完全控制才行.原文地址:http://bbs.delit.cn/thread-336-1-1.html 转载请注明出处: 撰写人: