Exemplo: Aplicativo SOAP moderno de área de trabalho do Windows 8
Publicado: novembro de 2016
Aplicável a: Dynamics CRM 2015
Este código de exemplo é para o Atualização do Microsoft Dynamics CRM 2015 e Microsoft Dynamics CRM Online 2015. Pode ser encontrado no seguinte local no pacote de download:
SampleCode\CS\ModernAndMobileApps\ModernSoapApp
Baixe o pacote do SDK do Microsoft Dynamics CRM.
Requisitos
Este exemplo requer os pacotes NuGet Microsoft.Preview.WindowsAzure.ActiveDirectory.Authentication e Microsoft.IdentityModel.Clients.ActiveDirectory. Se você tem uma conexão com a Internet funcionando, os pacotes são baixados e instalados automaticamente durante o carregamento da solução do projeto.
Para obter mais informações sobre os requisitos necessários à execução do código de exemplo fornecido neste SDK, consulte Usar o código de exemplo e auxiliar.
Demonstra
![]() Interface com o usuário fixada do aplicativo de exemplo |
Esse exemplo mostra como gravar um aplicativo moderno de desktop Windows 8.1 que possa enviar solicitações para o serviço Web da organização sem se vincular aos assemblies do SDK. Esse exemplo usa o protocolo Biblioteca de Autenticação do Active Directory (ADAL) do Microsoft Azure e SOAP. O exemplo também mostra a obtenção do ponto de extremidade do OAuth na URL do tempo de execução. Quando há sete quadros exibidos na página principal do aplicativo, somente os quadros Contas e Tarefas são conectados ao código do manipulador de eventos. Os outros quadros são apenas espaços reservados. O código de exemplo é configurado para uso com o servidor Microsoft Dynamics CRM Online e uma organização fictícia, mas também funciona com um servidor IFD. Trechos de código que mostram somente as principais seções do exemplo completo são mostrados mais adiante neste tópico. |
Exemplo
O trecho do código a seguir mostra como autenticar o usuário com o serviço Web da organização.
Para que esse código funcione, primeiro você deve registrar o aplicativo em um provedor de identidade suportado (AD FS ou Active Directory do Microsoft Azure). Em seguida, você deve definir os valores variáveis para _clientID e CrmServiceUrl no código. O valor da ID do cliente foi definido durante o registro do aplicativo. Para obter mais informações sobre o registro do aplicativo, consulte Passo a passo: Registrar o aplicativo CRM com Ative Directory.
Exemplo
O trecho do código a seguir mostra como recuperar registros da entidade do serviço Web da organização usando o código de protocolo SOAP em uma solicitação HTTP. O token de acesso de autenticação é colocado no cabeçalho de autorização.
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;
}
}
}
Você pode usar o provedor de ferramenta SOAPLogger no download do SDK para obter o código do SOAP para uma solicitação de organização. Para obter informações sobre o uso da ferramenta SOAPLogger, consulte Passo a passo: Usar o ponto de extremidade do SOAP do aplicativo moderno com JavaScript.
Confira Também
Crie aplicativos móveis e modernos
Autenticar o usuário nos serviços web
Exemplo: Aplicativo OData moderno de área de trabalho do Windows 8
Biblioteca de Autenticação do Azure (AAL) para o Windows Store: uma Análise Profunda
Protegendo um aplicativo da Windows Store e serviço Web REST usando o Azure AD (Preview)
Noções básicas sobre SOAP
© 2017 Microsoft. Todos os direitos reservados. Direitos autorais