无意中发现了友人的博客园文章,在发现这小子都排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; }