Eksempel: Moderne SOAP-app til Windows 8-deksktop
Udgivet: november 2016
Gælder for: Dynamics CRM 2015
Denne eksempelkode er for Microsoft Dynamics CRM 2015 og opdatering til Microsoft Dynamics CRM Online 2015. Den findes på følgende placering i downloadpakken:
SampleCode\CS\ModernAndMobileApps\ModernSoapApp
Hent SDK-pakken til Microsoft Dynamics CRM.
Krav
Dette eksempel kræver Microsoft.Preview.WindowsAzure.ActiveDirectory.Authentication og Microsoft.IdentityModel.Clients.ActiveDirectory NuGet-pakker. Hvis du har en fungerende forbindelse til internettet, hentes og installeres pakkerne automatisk, når du indlæser projektets løsning.
Du kan finde flere oplysninger om kravene til kørsel af den eksempelkode, der findes i denne SDK, under Brug eksempel- og hjælpekoden.
Demonstrerer
Side om side-brugergrænseflade af eksempel-appen |
I dette eksempel vises, hvordan du skriver et moderne Windows 8.1 desktopprogram, der kan sende anmodninger til organisationens webtjeneste uden at sammenkæde med SDK-assemblyer. Dette eksempel bruger protokollen Microsoft Azure Active Directory-godkendelsesbibliotek (ADAL) og SOAP. Eksemplet viser også, hvordan du får OAuth-slutpunktets URL på kørselstidspunktet. Der findes syv felter, der vises på appens hovedside, men kun felterne Konti og Opgaver er tilsluttet hændelseshandlerkoden. De andre felter er kun pladsholdere. Eksempelkoden er konfigureret til Microsoft Dynamics CRM Online-serveren og en fiktiv organisation, men fungerer også sammen med en IFD-server. Kodestykker, der viser de vigtigste afsnit af hele eksemplet, vises senere i dette emne. |
Eksempel
Følgende kodestykke viser, hvordan du godkender brugeren med organisationens webtjeneste.
For at denne programkode skal fungere skal du først registrere din app hos en understøttet identitetsudbyder (AD FS eller Microsoft Azure Active Directory). Derefter skal du angive de variable værdier for _clientID og CrmServiceUrl i koden. Værdien for klient-ID, der er defineret under app-registrering. Du kan finde flere oplysninger om app-registrering under Gennemgang: Registrere en CRM-app med Active Directory.
Eksempel
Følgende kodestykke viser, hvordan du henter objektposter fra organisationens webtjeneste ved hjælp af SOAP-koden i en HTTP-anmodning. Det pågældende adgangstokens godkendelse placeres i godkendelsesheaderen.
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
namespace ModernSoapApp
{
public static class HttpRequestBuilder
{
/// <summary>
/// Retrieve entity record data from the organization web service.
/// </summary>
/// <param name="accessToken">The web service authentication access token.</param>
/// <param name="Columns">The entity attributes to retrieve.</param>
/// <param name="entity">The target entity for which the data should be retreived.</param>
/// <returns>Response from the web service.</returns>
/// <remarks>Builds a SOAP HTTP request using passed parameters and sends the request to the server.</remarks>
public static async Task<string> RetrieveMultiple(string accessToken, string[] Columns, string entity)
{
// Build a list of entity attributes to retrieve as a string.
string columnsSet = string.Empty;
foreach (string Column in Columns)
{
columnsSet += "<b:string>" + Column + "</b:string>";
}
// Default SOAP envelope string. This XML code was obtained using the SOAPLogger tool.
string xmlSOAP =
@"<s:Envelope xmlns:s='https://schemas.xmlsoap.org/soap/envelope/'>
<s:Body>
<RetrieveMultiple xmlns='https://schemas.microsoft.com/xrm/2011/Contracts/Services' xmlns:i='http://www.w3.org/2001/XMLSchema-instance'>
<query i:type='a:QueryExpression' xmlns:a='https://schemas.microsoft.com/xrm/2011/Contracts'><a:ColumnSet>
<a:AllColumns>false</a:AllColumns><a:Columns xmlns:b='https://schemas.microsoft.com/2003/10/Serialization/Arrays'>" + columnsSet +
@"</a:Columns></a:ColumnSet><a:Criteria><a:Conditions /><a:FilterOperator>And</a:FilterOperator><a:Filters /></a:Criteria>
<a:Distinct>false</a:Distinct><a:EntityName>" + entity + @"</a:EntityName><a:LinkEntities /><a:Orders />
<a:PageInfo><a:Count>0</a:Count><a:PageNumber>0</a:PageNumber><a:PagingCookie i:nil='true' />
<a:ReturnTotalRecordCount>false</a:ReturnTotalRecordCount>
</a:PageInfo><a:NoLock>false</a:NoLock></query>
</RetrieveMultiple>
</s:Body>
</s:Envelope>";
// The URL for the SOAP endpoint of the organization web service.
string url = CurrentEnvironment.CrmServiceUrl + "/XRMServices/2011/Organization.svc/web";
// Use the RetrieveMultiple CRM message as the SOAP action.
string SOAPAction = "https://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/RetrieveMultiple";
// Create a new HTTP request.
HttpClient httpClient = new HttpClient();
// Set the HTTP authorization header using the access token.
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
// Finish setting up the HTTP request.
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, url);
req.Headers.Add("SOAPAction", SOAPAction);
req.Method = HttpMethod.Post;
req.Content = new StringContent(xmlSOAP);
req.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml; charset=utf-8");
// Send the request asychronously and wait for the response.
HttpResponseMessage response;
response = await httpClient.SendAsync(req);
var responseBodyAsText = await response.Content.ReadAsStringAsync();
return responseBodyAsText;
}
}
}
Du kan bruge værktøjet SOAPLogger, når du henter SDK, for at få SOAP-kode for en anmodning om organisation. Hvis du vil have flere oplysninger om brugen af værktøjet SOAPLogger, skal du se Gennemgang: Bruge moderne App SOAP-slutpunkt sammen med JavaScript.
Se også
Skriv mobilapps og moderne apps
Godkend brugeren med webtjenesterne
Eksempel: Moderne OData-app til Windows 8-deksktop
Azure Authentication Library (AAL) til Windows Store: en undersøgelse
Sikre Windows Store-program og REST-webtjeneste ved hjælp af Azure AD (eksempel)
Om SOAP
© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret