无意中发现了友人的博客园文章,在发现这小子都排200+了,发现自己居然好多年都没有更新过博客园,而且只有两篇文章,懒惰啊,看来以后也需要把该写的,改记的都写下来,给自己留个纪念也给别人留些帮助,作为一个来园子都8年的人,该做点贡献不是。
最近需要跟Desk.com做集成,翻了他们的Document和Sample,发现也没啥有用的东西,对Salesforce他家的东西接触的也不多,官网里只介绍了如何发送请求,如何通过验证,以及有什么对象等等,动手还得自己来,既然是REST Service那就从类库开始,使用Nuget下载最新的RestSharp类库,添加引用,动手操作。
实际代码也不复杂,先实例化一个客户端出来,里面添加相应的验证信息,然后发送Request去请求响应的对象,对象可以参照他们的开发文档。
private RestClient GetClient()
{
return new RestClient("https://xxx.desk.com/")
{
Authenticator = OAuth1Authenticator.ForProtectedResource(
Application.Default.Key, // Key
Application.Default.KeySecret, // Key Secret
Application.Default.Token, // Token
Application.Default.TokenSecret // Token Secret
)
};
}
private T Request<T>(string resource, Method method, IEnumerable<Parameter> parameters = null, object body = null) where T : new()
{
return RequestAtBase<T>("api/v2/" + resource, method, parameters, body);
}
private T RequestAtBase<T>(string resource, Method method, IEnumerable<Parameter> parameters = null, object body = null) where T : new()
{
var request = new RestRequest()
{
Method = method,
Resource = resource,
RequestFormat = DataFormat.Json,
};
if (parameters != null) parameters.ToList().ForEach(parameter => request.AddParameter(parameter));
if (body != null) request.AddBody(body);
var result = GetClient().Execute<T>(request);
if (Convert.ToInt32(result.StatusCode) < 200 || Convert.ToInt32(result.StatusCode) > 300) throw new OczDeskApiException<T>(result);
return result.Data;
}