Condividi tramite


Esempio: app SOAP moderna desktop per Windows 8

 

Data di pubblicazione: novembre 2016

Si applica a: Dynamics CRM 2015

Questo codice di esempio è per Aggiornamento di Microsoft Dynamics CRM 2015 e Microsoft Dynamics CRM Online 2015. È disponibile nel percorso seguente nel pacchetto di download:

SampleCode\CS\ModernAndMobileApps\ModernSoapApp

Scarica il pacchetto SDK di Microsoft Dynamics CRM.

Requisiti

Questo esempio richiede i pacchetti NuGet Microsoft.Preview.WindowsAzure.ActiveDirectory.Authentication e Microsoft.IdentityModel.Clients.ActiveDirectory. Se si dispone di una connessione Internet funzionante, i pacchetti vengono automaticamente scaricati quando si carica la soluzione del progetto.

Per ulteriori informazioni sui requisiti per l'esecuzione del codice di esempio fornito nell'SDK, vedi Utilizzare il codice di esempio e dell'helper.

Dimostra

Schermata principale dell'app di esempio di Windows 8

Interfaccia utente a riquadri dell'applicazione di esempio

In questo esempio viene illustrato come sviluppare un'applicazione moderna desktop di Windows 8.1 che può inviare richieste al servizio Web dell'organizzazione senza collegarsi agli assembly SDK. Vengono utilizzati i protocolli Libreria di autenticazione di Microsoft Azure Active Directory (ADAL) e SOAP. Nell'esempio viene inoltre illustrato come ottenere l'endpoint OAuthURL in fase di esecuzione.

Sebbene siano disponibili sette riquadri visualizzati nella pagina principale dell'app, solo i riquadri degli account e delle attività sono connessi al codice del gestore eventi. Gli altri riquadri sono solo segnaposto.

Il codice di esempio è configurato per il server Microsoft Dynamics CRM Online e per un'organizzazione fittizia, ma funziona anche con un server IFD.

I frammenti di codice che mostrano solo le sezioni principali dell'esempio completo sono illustrati più avanti in questo argomento.

Esempio

Il seguente frammento di codice mostra come autenticare l'utente con il servizio Web dell'organizzazione.

Affinché questo tipo di codice funzioni, è innanzitutto necessario registrare l'applicazione con un provider di identità supportato (AD FS o Microsoft Azure Active Directory). Successivamente, è necessario impostare i valori delle variabili _clientID e CrmServiceUrl nel codice. Il valore dell'ID client è stato definito durante la registrazione dell'app. Per ulteriori informazioni sulla registrazione dell'app, vedere Procedura dettagliata: registrare un'applicazione CRM con Active Directory.

Esempio

Il seguente frammento di codice mostra il recupero di record di entità dal servizio Web dell'organizzazione tramite il codice SOAP in una richiesta HTTP. Il token di accesso per l'autenticazione è disponibile nell'intestazione dell'autorizzazione.


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;
        }
    }
}

È possibile utilizzare il provider degli strumenti SOAPLogger disponibile nel download dell'SDK per ottenere il codice SOAP per una richiesta dell'organizzazione. Per ulteriori informazioni sull'utilizzo dello strumento SOAPLogger, vedere Procedura dettagliata: utilizzare l'endpoint SOAP moderno dell'app con JavaScript.

Vedere anche

Scrivere moderne applicazioni per dispositivi mobili
Autenticare l'utente con i servizi Web
Esempio: applicazione OData moderna desktop per Windows 8
Libreria di autenticazione di Windows Azure Active Directory (AAL) per Windows Store: Deep Dive
Proteggere un'applicazione di Windows Store e un servizio Web REST utilizzando Azure AD (anteprima)
Informazioni su SOAP

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright