Use CrmServiceClient to execute web request against Web API – Dynamics 365

Sending
User Review
0 (0 votes)

In the previous post we saw how to use CrmServiceClient to connect to CDS using Authentication Type – OAuth and execute web request using Organization.svc service

https://nishantrana.me/2020/11/09/sample-code-to-connect-to-cds-dynamics-365-ce-using-oauth/

Here we will extend the same example to execute web request using Web API.

  • Create the contact record with first name and last name populated
 using Microsoft.Xrm.Tooling.Connector;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http; namespace SampleConsoleApp
{
class Program
{
static void Main(string[] args)
{
string ConnectionString = "AuthType = OAuth; " + "Username = [username]@[domain].onmicrosoft.com;" + "Password = [password]; " + "Url = https://[orgname].crm.dynamics.com;" + "AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;" + "RedirectUri=app://58145B91-0C36-4500-8554-080854F2AC97;" + "LoginPrompt=Auto"; CrmServiceClient svc = new CrmServiceClient(ConnectionString); // specify OData Headers
Dictionary<string, List<string>> odataHeaders = new Dictionary<string, List<string>>
{
{ "Accept", new List<string>() { "application/json" } },
{ "OData-MaxVersion", new List<string>() { "4.0" } },
{ "OData-Version", new List<string>() { "4.0" } }
}; if (svc.IsReady)
{
// create a contact record with firstname and lastname populated
dynamic contact = new JObject();
contact.firstname = "Meeska";
contact.lastname = "Mooska";
string jsonContact = Newtonsoft.Json.JsonConvert.SerializeObject(contact); // create the contact record
// Parameters - HttpMethod, QueryString, Body, Customer Headers, Content Type
HttpResponseMessage httpResponse = svc.ExecuteCrmWebRequest(
HttpMethod.Post, "contacts",
jsonContact,
odataHeaders, "application/json"); if (httpResponse.IsSuccessStatusCode)
{
var contactUri = httpResponse.Headers.GetValues("OData-EntityId").FirstOrDefault();
Console.WriteLine("Contact URI: {0}", contactUri);
}
else
{
Console.WriteLine(httpResponse.ReasonPhrase);
}
}
}
}
} 
  • Retrieve first name and last name for all the contact
 // retrieve first name and last name of all the contact records HttpResponseMessage httpResponse = svc.ExecuteCrmWebRequest(
HttpMethod.Get, "contacts?$select=firstname,lastname",
string.Empty,
odataHeaders, "application/json"); 

Get the details here – ExecuteCrmWebRequest

Hope it helps..