专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Dynamics CRM

Dynamics CRM 2015/2016 Web API:Unbound Action 跟 Bound Action

发布时间:2010-06-13 13:36:03 文章来源:www.iduyao.cn 采编人员:星星草
Dynamics CRM 2015/2016 Web API:Unbound Action 和 Bound Action

上篇文章介绍了Bound/Unbound Function,今天我们来看看Action吧,像我之前说的:Function和Action之前的区别可以简单理解为,Function不修改数据,但是Action却会修改数据。 今天呢,我们也分别看看Bound Action和Unbound Action,其实它们的调用方式和Function是一样的,只是这里的请求提交方式更多的是采用Post的方式,我们先来看两个例子吧:

公共变量

static string clientId = "580c20be-5960-42a0-837f-9b554b88b2d5";//"025220cd-a8c9-414f-aad7-a9288404262b";  
       static string service = "https://ghostbear.crm6.dynamics.com";  
       static string redirectUrl = "http://localhost/weapidemo";  
       static string username = "account";  
       static string password = "pwd";  
       static string webApiUrl = "https://ghostbear.api.crm6.dynamics.com/api/data/v8.0";  

Bound Action

它也是可以基于具体的上下文去调用的,当然在调用这个Bound Action之前,不要忘记添加前缀“Microsoft.Dynamics.CRM”,要不然,请求会失败。在下面这个例子里面,我们往队列里面添加了一个电话记录。仔细的朋友肯定已经意识到了,这里我们需要构造请求体,对于请求体的数据结构,可以看博主之前的文章,在这套新API里面,数据结构都简化了,我们可以使用最基础的结构去构造请求体。

            HttpRequestMessage addToQueueReq = new HttpRequestMessage(HttpMethod.Post, webApiUrl + "/queues(70f6a997-71bb-e511-80d8-c4346bc5f7c8)/Microsoft.Dynamics.CRM.AddToQueue");
            addToQueueReq.Headers.Authorization = new AuthenticationHeaderValue("Bearer", auth.AcquireToken().AccessToken);

            JObject addToQueueActivity = new JObject();
            addToQueueActivity.Add("activityid", "3040F58A-75BB-E511-80D9-C4346BC43F3C");
            addToQueueActivity.Add("@odata.type", "Microsoft.Dynamics.CRM.phonecall");

            JObject addToQueueContent = new JObject();
            addToQueueContent.Add("Target", addToQueueActivity);

            addToQueueReq.Content = new StringContent(JsonConvert.SerializeObject(addToQueueContent), Encoding.UTF8, "application/json");

            HttpResponseMessage addToQueueResp = await client.SendAsync(addToQueueReq);

            if (addToQueueResp.IsSuccessStatusCode)
            {
                JObject result = JsonConvert.DeserializeObject<JObject>(await addToQueueResp.Content.ReadAsStringAsync());
                Console.WriteLine(result["QueueItemId"]);
            }

Unbound Action

顾名思义,该Action可以在任何实体上进行调用,可以对其单独调用,如下例子。这里我们调用了WinOpportunity Action,对某个商机发起赢单操作,期间,我们是需要构造正确的请求体。

            HttpRequestMessage winOppReq = new HttpRequestMessage(HttpMethod.Post, webApiUrl + "/WinOpportunity");
            winOppReq.Headers.Authorization = new AuthenticationHeaderValue("Bearer", auth.AcquireToken().AccessToken);

            JObject closeOppItem = new JObject();
            closeOppItem.Add("subject", "Won Opportunity!");
            closeOppItem.Add("opportunityid@odata.bind", webApiUrl + "/opportunities(1440F58A-75BB-E511-80D9-C4346BC43F3C)");

            JObject requestBody = new JObject();
            requestBody.Add("Status", 3);
            requestBody.Add("OpportunityClose", closeOppItem);

            winOppReq.Content = new StringContent(JsonConvert.SerializeObject(requestBody), Encoding.UTF8, "application/json");

            HttpResponseMessage winOppResp = await client.SendAsync(winOppReq);

            if (winOppResp.IsSuccessStatusCode)
            {
                JObject result = JsonConvert.DeserializeObject<JObject>(await winOppResp.Content.ReadAsStringAsync());
                Console.WriteLine(result);
            }

调用这些Action是不是很方便了,只需要构造好URL和请求体即可,调用这些请求在轻客户端是非常便捷的,至少我们不用去抓包并拼接SOAP消息体啦。


友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: