在上一篇《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):

 {
"code" : "success",
"data" : {
"compareId" : ,
"createTime" : "2017-12-25 16:17:27",
"name" : "compare0001",
"priority" : ,
"reason" : "reason",
"sourceId" : "",
"status" : "succcess",
"thumbnail" : [ "https://m.bimface.com/9b711803a43b92d871cde346b63e5019/thumbnail/96.png" ]
},
"message" : ""
}

C#实现方法:

 /// <summary>
/// 应用发起对比以后,可以通过该接口查询对比状态
/// </summary>
/// <param name="accessToken">【必填】令牌</param>
/// <param name="compareId">【必填】模型对比ID</param>
/// <returns></returns>
public virtual ModelCompareResponse GetCompareStatus(string accessToken, long compareId)
{
//GET https://api.bimface.com/v2/compare
string url = string.Format(BimfaceConstants.API_HOST + "/v2/compare?compareId={0}", compareId); BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
headers.AddOAuth2Header(accessToken); try
{
ModelCompareResponse response; HttpManager httpManager = new HttpManager(headers);
HttpResult httpResult = httpManager.Get(url);
if (httpResult.Status == HttpResult.STATUS_SUCCESS)
{
response = httpResult.Text.DeserializeJsonToObject<ModelCompareResponse>();
}
else
{
response = new ModelCompareResponse
{
Message = httpResult.RefText
};
} return response;
}
catch (Exception ex)
{
throw new Exception("[获取模型对比状态]发生异常!", ex);
}
}

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

测试

测试代码如下:

 /// <summary>
/// 获取对比状态
/// </summary>
protected void btnGetCompareStatus_Click(object sender, EventArgs e)
{
txtResult.Text = string.Empty; long compareId = txtCompareID.Text.ToLong();
IModelCompareApi api = new ModelCompareApi();
ModelCompareResponse response = api.GetCompareStatus(txtAccessToken.Text, compareId); txtResult.Text = response.SerializeToJson();
}

测试结果:

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

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

最新文章

  1. Java Swing
  2. jsp文件引入js文件的方式(项目部署于web容器中)
  3. ABAP modify screen:修改屏幕,实现隐藏、禁止输入字段
  4. linux终端下 编译c语言程序
  5. C#&amp;java重学笔记(面向对象)
  6. iOS开发UI-利用Quartz2D 实现基本绘图(画三角形、矩形、圆、圆弧)
  7. Android Animation学习笔记
  8. poj 1144 Network
  9. (转载)vsftpd简易配置
  10. html img 使用data格式加载图片
  11. unity3D的FingerGestures小工具
  12. 第9章 组合模式(Composite Pattern)
  13. 怎样成为PHP 方向的一个合格的架构师(转)
  14. 丢掉鼠标-Mac神软Alfred使用手册
  15. js keys方法和foreach方法区别
  16. Oracle 中PLSQL的ftp应用
  17. 小程序开发-Step1
  18. 基于 HTML5 的工业组态高炉炼铁 3D 大屏可视化
  19. centos7 部署elasticsearch
  20. Ruby知识总结-一般变量+操作符+if+数组和哈希

热门文章

  1. 两个看似相同,结果不同的SQL逻辑
  2. matplotlib.pyplot库函数关于坐标轴显示的支持
  3. WEB应用之httpd基础入门(五)
  4. shell脚本中的case条件语句介绍和使用案例
  5. js 的 new 干了什么
  6. python——体育竞技
  7. Python——office编程
  8. ajax请求以及递归
  9. 《Python Enhancement Proposal #8》要点 学习摘录
  10. MariaDB使用数据库查询《三》