说明
BIMFACE开发的重要内容之一就是调用服务端接口。可以官方文档查看,注意服务端接口,不能在web端用js调用!
后台帮助类
直接上代码,本帮助类,目前只是写了调用accesstoken的方法,后续还会增加。
using System;
using System.IO;
using System.Net;
using System.Text;
namespace Helper.BIMFACEHelper
{
/// <summary>
/// BIMFACE二次开发所用的公共方法
/// 官方文档 http://static.bimface.com/book/restful/articles/api/accesstoken.html?p=doc
/// author:长安山南君,zhao power
/// date:2019年1月11日22:28:48
/// </summary>
public class BIMFACEHelper
{
#region 获取AccessToken
/// <summary>
/// 获取AccessToken
/// </summary>
/// <param name="appKey">BIMFACE项目的appKey</param>
/// <param name="appSecret">appSecret</param>
/// <returns>AccessToken 字符串</returns>
/// 成功:{"code":"success","message":null,"data":{"token":"xxxx-xxxx-xxxx-xxxx","expireTime":"2016-05-01 01:11:11"}}
/// 失败: {"code":"authentication.failed","message":"Invalid basic authentication token."}
public string GetAccessToken(string appKey, string appSecret)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.bimface.com/oauth2/token");
//按 官方文档 构成参数
string KeyAndSecret = appKey + ":" + appSecret;
string AuthorizationPara = EncodeBase64("utf-8", KeyAndSecret); //对于KeyAndSecret , 采用GBK、utf-8、GB2312编码结果是相同的。
AuthorizationPara ="Basic "+AuthorizationPara;
//post请求
request.Method = "POST";
request.ContentType = "application/json";
request.Headers.Add("authorization", AuthorizationPara);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd(); //字符串类型的json,不用刻意转换成json,也不能转换成json对象。
//JsonResult myJson = new JsonResult();
//myJson.Data = retString;
//myJson.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return retString; //换回字符串,web前台使用JSON.parse() 将字符串转换成 json对象使用。
}
#endregion
#region base64编码和解码
/// <summary>
/// base64编码
/// </summary>
/// <param name="code_type">编码类型</param>
/// <param name="code">待编码的字符串</param>
/// <returns></returns>
public static string EncodeBase64(string code_type, string code)
{
string encode = "";
byte[] bytes = Encoding.GetEncoding(code_type).GetBytes(code);
try
{
encode = Convert.ToBase64String(bytes);
}
catch
{
encode = code;
}
return encode;
}
/// <summary>
/// base64解码
/// </summary>
/// <param name="code_type">编码类型</param>
/// <param name="code">待编码的字符串</param>
/// <returns>编码后的字符串</returns>
public static string DecodeBase64(string code_type, string code)
{
string decode = "";
byte[] bytes = Convert.FromBase64String(code);
try
{
decode = Encoding.GetEncoding(code_type).GetString(bytes);
}
catch
{
decode = code;
}
return decode;
}
#endregion
}
}