說明
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:長安山南君,趙鋒力
/// 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
}
}