C#开发BIMFACE系列31 服务端API之模型对比2:获取模型对比状态

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

  在上一篇《C#开发BIMFACE系列30 服务端API之模型对比1:发起模型对比》中发起了2个模型对比,由于模型对比是在BIMFACE云端进行的,通常需要5~10分钟。当模型对比完成后,BIMFACE通过回调机制通知对比结果。

特别说明:BIMFACE可以通过回调机制将模型/文件转换、对比等耗时操作结果通知开发者。该方案与微信开发类似,需要开发者提供开发者服务器,并且该服务器对外公布一个外网地址,BIMFACE能访问到该地址才可以。如果没有正式域名或者外网IP,那么该方案则无法完成。

  本文介绍通过调用接口的方式来查询模型对比状态的结果。模型/文件对比状态有四种:prepare(待对比)、processing(对比中)、success(对比成功)、failed(对比失败)。发起模型对比成功后状态为 processing。经过一段时间转对比后,可能对比成功,也有可能对比失败。

请求地址:GET https://api.bimface.com/v2/compare

说明:应用发起对比以后,可以通过该接口查询对比状态

参数:

请求 path(示例):https://api.bimface.com/v2/compare?compareId=857482189666208

请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"

HTTP响应示例(200):

复制代码
 1 {
 2   "code" : "success",
 3   "data" : {
 4     "compareId" : 1248756572307264,
 5     "createTime" : "2017-12-25 16:17:27",
 6     "name" : "compare0001",
 7     "priority" : 2,
 8     "reason" : "reason",
 9     "sourceId" : "123223223212",
10     "status" : "succcess",
11     "thumbnail" : [ "https://m.bimface.com/9b711803a43b92d871cde346b63e5019/thumbnail/96.png" ]
12   },
13   "message" : ""
14 }
复制代码

C#实现方法:

复制代码
 1 /// <summary>
 2 /// 应用发起对比以后,可以通过该接口查询对比状态
 3 /// </summary>
 4 /// <param name="accessToken">【必填】令牌</param>
 5 /// <param name="compareId">【必填】模型对比ID</param>
 6 /// <returns></returns>
 7 public virtual ModelCompareResponse GetCompareStatus(string accessToken, long compareId)
 8 {
 9     //GET https://api.bimface.com/v2/compare
10     string url = string.Format(BimfaceConstants.API_HOST + "/v2/compare?compareId={0}", compareId);
11 
12     BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
13     headers.AddOAuth2Header(accessToken);
14 
15     try
16     {
17         ModelCompareResponse response;
18 
19         HttpManager httpManager = new HttpManager(headers);
20         HttpResult httpResult = httpManager.Get(url);
21         if (httpResult.Status == HttpResult.STATUS_SUCCESS)
22         {
23             response = httpResult.Text.DeserializeJsonToObject<ModelCompareResponse>();
24         }
25         else
26         {
27             response = new ModelCompareResponse
28             {
29                 Message = httpResult.RefText
30             };
31         }
32 
33         return response;
34     }
35     catch (Exception ex)
36     {
37         throw new Exception("[获取模型对比状态]发生异常!", ex);
38     }
39 }
复制代码

代码中使用的 HttpManager 类请参考我的博客文章《C# HTTP系列 HttpWebRequest 与 HttpWebResponse》。

测试

测试代码如下:

复制代码
 1 /// <summary>
 2 ///  获取对比状态
 3 /// </summary>
 4 protected void btnGetCompareStatus_Click(object sender, EventArgs e)
 5 {
 6     txtResult.Text = string.Empty;
 7 
 8     long compareId = txtCompareID.Text.ToLong();
 9     IModelCompareApi api = new ModelCompareApi();
10     ModelCompareResponse response = api.GetCompareStatus(txtAccessToken.Text, compareId);
11 
12     txtResult.Text = response.SerializeToJson();
13 }
复制代码

测试结果:

  等待一段时间后再次调用该接口

 显示对比成功。到控制台查看,显示也是成功的。

BIMFACE二次开发系列目录     【已更新最新开发文章,点击查看详细】
posted @   张传宁  阅读(485)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
页脚 HTML 代码
点击右上角即可分享
微信分享提示