C#开发BIMFACE系列31 服务端API之模型对比2:获取模型对比状态
![](https://img2020.cnblogs.com/blog/142275/202106/142275-20210603212439282-864762984.jpg)
在上一篇《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 }
测试结果:
等待一段时间后再次调用该接口
显示对比成功。到控制台查看,显示也是成功的。
![](https://img2020.cnblogs.com/blog/142275/202106/142275-20210603212458009-1163608616.png)
成在管理,败在经验;嬴在选择,输在不学! 贵在坚持!
个人作品
BIMFace.SDK.NET
开源地址:https://gitee.com/NAlps/BIMFace.SDK
系列博客:https://www.cnblogs.com/SavionZhang/p/11424431.html
系列视频:https://www.cnblogs.com/SavionZhang/p/14258393.html
技术栈
1、Visual Studio、.NET Core/.NET、MVC、Web API、RESTful API、gRPC、SignalR、Java、Python
2、jQuery、Vue.js、Bootstrap、ElementUI
3、数据库:分库分表、读写分离、SQLServer、MySQL、PostgreSQL、Redis、MongoDB、ElasticSearch、达梦DM
4、架构:DDD、ABP、SpringBoot、jFinal
5、环境:跨平台、Windows、Linux、Nginx
6、移动App:Android、IOS、HarmonyOS、微信小程序、钉钉、uni-app、MAUI
分布式、高并发、云原生、微服务、Docker、CI/CD、DevOps、K8S;Dapr、RabbitMQ、Kafka、RPC、Elasticsearch。
欢迎关注作者头条号 张传宁IT讲堂,获取更多IT文章、视频等优质内容。
出处:www.cnblogs.com/SavionZhang
作者:张传宁 技术顾问、培训讲师、微软MCP、系统架构设计师、系统集成项目管理工程师、科技部创新工程师。
专注于企业级通用开发平台、工作流引擎、自动化项目(代码)生成器、SOA 、DDD、 云原生(Docker、微服务、DevOps、CI/CD);PDF、CAD、BIM 审图等研究与应用。
多次参与电子政务、图书教育、生产制造等企业级大型项目研发与管理工作。
熟悉中小企业软件开发过程:可行调研、需求分析、架构设计、编码测试、实施部署、项目管理。通过技术与管理帮助中小企业实现互联网转型升级全流程解决方案。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如有问题,可以通过邮件905442693@qq.com联系。共同交流、互相学习。
如果您觉得文章对您有帮助,请点击文章右下角【推荐】。您的鼓励是作者持续创作的最大动力!