Exemple : application SOAP moderne de bureau Windows 8
Date de publication : novembre 2016
S’applique à : Dynamics CRM 2015
Cet exemple de code est pour Mise à jour de Microsoft Dynamics CRM 2015 et de Microsoft Dynamics CRM Online 2015. Il se trouve à l'emplacement suivant dans le package de téléchargement :
SampleCode\\CS\\ModernAndMobileApps\\ModernSoapApp
Téléchargez le package Kit de développement logiciel (SDK) de Microsoft Dynamics CRM.
Configuration requise
Cet exemple nécessite les packages NuGet Microsoft.Preview.WindowsAzure.ActiveDirectory.Authentication et Microsoft.IdentityModel.Clients.ActiveDirectory. Si vous disposez d’une connexion Internet active, les packages sont automatiquement téléchargés et installés lorsque vous chargez la solution du projet.
Pour plus d'informations sur les conditions requises pour l'exécution de l'exemple de code fourni dans ce Kit de développement logiciel (SDK), consultez la rubrique Utiliser l’exemple de code et le code d’assistance.
Démontre
Interface utilisateur en mosaïque de l’exemple de l’application |
Cet exemple indique comment écrire une application moderne de bureau Windows 8.1 qui peut envoyer des requêtes au service Web de l’organisation sans créer de liaison aux assemblys du kit de développement logiciel (SDK). Cet exemple utilise le Bibliothèque d'authentification Microsoft Azure Active Directory et le protocole SOAP. Cet exemple illustre également comment obtenir le OAuth point de terminaison URL au moment de l’exécution. Alors qu’il existe sept mosaïques affichées sur la page principale de l’application, seules les mosaïques Comptes et Tâches sont connectées au code du gestionnaire des évènements. Les autres mosaïques sont simplement des espaces réservés. L’exemple de code est configuré pour le serveur Microsoft Dynamics CRM Online et une organisation fictive, mais fonctionne également avec un serveur IFD. Les extraits de code affichant juste les sections principales de l’exemple complet sont indiqués ultérieurement dans cette rubrique. |
Exemple
L’extrait de code suivant indique comment authentifier l’utilisateur avec le service Web de l’organisation.
Pour que ce code fonctionne, vous devez d’abord enregistrer votre application avec un fournisseur d’identité pris en charge (AD FS ou Microsoft Azure Active Directory). Ensuite, vous devez définir des valeurs variables pour _clientID et CrmServiceUrl dans le code. La valeur de l’ID client a été définie au cours de l’inscription de l’application. Pour plus d’informations sur l’enregistrement de l’application, voir Guide pas-à-pas : Enregistrer une application CRM auprès d'Active Directory.
Exemple
L’extrait du code suivant indique comment récupérer les enregistrements d’entité à partir du service Web de l’organisation à l’aide du code SOAP dans une demande HTTP. Le jeton d’accès d’authentification se trouve dans l’en-tête d’autorisation.
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;
}
}
}
Vous pouvez utiliser le fournisseur de l’outil SOAPLogger dans le téléchargement du kit de développement logiciel (SDK) pour obtenir le code SOAP pour une demande d’organisation. Pour plus d’informations sur l’outil SOAPLogger, voir Guide pas-à-pas : Utilisation du point de terminaison SOAP d’applications modernes avec JavaScript.
Voir aussi
Écrire des applications mobiles et modernes
Authentifier l’utilisateur auprès des services Web
Exemple : application OData moderne de bureau Windows 8
Bibliothèque d'authentification Azure (AAL) pour Windows Store : étude approfondie
Sécurisation d'une application Windows Store et du service Web REST à l'aide d'Azure AD (aperçu)
Présentation de SOAP
© 2017 Microsoft. Tous droits réservés. Copyright