2017-10-03 100 views
6

CRM 2016 odsłania odata/web api i ma functions i actions po wyjęciu z pudełka.Jak uzyskać dostęp do zasobów za pomocą interfejsu webowego?

z obsługi organizacyjnej, możemy generować żądanie like this:

// Create the van required resource object. 
RequiredResource vanReq = new RequiredResource 
{ 
    ResourceId = _vanId, 
    ResourceSpecId = _specId 
}; 

// Create the appointment request. 
AppointmentRequest appointmentReq = new AppointmentRequest 
{ 
    RequiredResources = new RequiredResource[] { vanReq }, 
    Direction = SearchDirection.Backward, 
    Duration = 60, 
    NumberOfResults = 10, 
    ServiceId = _plumberServiceId, 
    // The search window describes the time when the resouce can be scheduled. 
    // It must be set. 
    SearchWindowStart = DateTime.Now.ToUniversalTime(), 
    SearchWindowEnd = DateTime.Now.AddDays(7).ToUniversalTime(), 
    UserTimeZoneCode = 1 
}; 

// Verify whether there are openings available to schedule the appointment using this resource    
SearchRequest search = new SearchRequest 
{ 
    AppointmentRequest = appointmentReq 
}; 
SearchResponse searched = (SearchResponse)_serviceProxy.Execute(search); 

if (searched.SearchResults.Proposals.Length > 0) 
{ 
    Console.WriteLine("Openings are available to schedule the resource."); 
} 

Czy to możliwe, aby naśladować tę funkcję przy użyciu funkcji/działań lub innego OData funkcjonalność?

wierzę, że wniosek powinien być mniej więcej tak:

crmOrg/api/v8.1/Search([email protected])[email protected]= 

Jednak nie jestem pewien, jak kodować resztę wniosku.

+0

'_serviceProxy.Execute' wyśle ​​żądanie przez' http' (port TCP 80) do punktu końcowego (przy użyciu protokołu HTTP GET) . Możesz przechwycić to żądanie na swoim komputerze za pomocą sniffera sieciowego lub narzędzia do debugowania. Wolę [Fiddler] (http://www.telerik.com/fiddler), możesz skonfigurować to jako pośrednik między aplikacją a punktem końcowym, a to spowoduje przechwycenie ruchu. To tylko kwestia odczytywania adresu URL dla każdego konkretnego żądania, które chcesz naśladować. Utwórz więc żądanie w języku C# i przechwyć wygenerowany adres URL w Fiddler (* również jest to darmowe narzędzie, nie mam powiązania z telerik *). – Igor

+0

Prawdopodobnie możesz skomponować fetchxml i wywołać api web api tak: https://community.dynamics.com/crm/b/mscrmcustomization/archive/2016/11/01/use-fetchxml-to-retrieve-data- from-ms-crm-2016-using-web-api –

Odpowiedz

2

Parametr idzie tak:

http://yourcrm.org/org/api/data/v8.1/Search([email protected])/[email protected]={SearchWindowStart:%272017-01-01%27,Duration:60,NumberOfResults:10} 

to url zakodowane JSON serializowanym AppointmentRequest klasie.

{ 
    SearchWindowStart:'2017-01-01', 
    Duration: 60, 
    NumberOfResults:10, 
    etc... 
} 

Więcej informacji tutaj: https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.appointmentrequest.aspx

odniesienia OData: http://odata.github.io/WebApi/04-06-function-parameter-support/