Del via


Udfør grundlæggende datahandlinger, der bruger OData-slutpunkt

 

Udgivet: november 2016

Gælder for: Dynamics CRM 2015

Der er en række biblioteker eller teknologier, som du kan bruge til at køre HTTP-anmodningerne for at udføre datahandlinger ved hjælp af OData-slutpunktet i Microsoft Dynamics CRM 2015 og opdatering til Microsoft Dynamics CRM Online 2015. I dette emne beskrives formatet for HTTP-anmodninger på lavt niveau. Uanset, hvilket bibliotek eller hvilken teknologi du bruger, kan du med et fejlfindingsværktøj til webproxyer, f.eks. Fiddler, undersøge HTTP-trafikken og sammenligne de viste resultater med kravene til OData-slutpunktet. Dette emne indeholder eksempler på HTTP-anmodninger og -svar, som er fanget ved hjælp af Fiddler. Noget af indholdet i disse eksempler er blevet redigeret af pladshensyn, og <placeholders> er medtaget, hvor indholdet kan variere baseret på miljøvariabler.

Du kan finde flere oplysninger om programmer, der bruger en bestemt teknologi: Brug OData-slutpunktet med Ajax og JScript-webressourcer

Dette emne indeholder

Oprettelse af poster

  • Brug af ATOM

  • Brug af JSON

Hentning af poster

  • Brug af ATOM

  • Brug af JSON

Opdatering af poster

  • Opdater ved hjælp af PUT

  • Opdater ved hjælp af MERGE

    • Brug af ATOM

    • Brug af JSON

Sletning af poster

  • Brug af ATOM

  • Brug af JSON

HTTP-statuskoder

Oprettelse af poster

Nye poster oprettes ved at udføre en HTTP POST-anmodning mod URI'en for den samling, hvor posten skal oprettes. POST-anmodningen indeholder den nye post i brødteksten og bruger enten formatet ATOM eller formatet JSON.

Serveren tildeler standardværdierne til de egenskaber, der ikke er angivet i anmodningen, og returnerer resultatet med headeren 'Location', der indeholder URL-adressen for den post, der blev oprettet. Posttitelelementet afspejler den primære attribut for objektet. For objektet account er attributten name den primære attribut. HTTP-statuskode 201 angiver, at posten er blevet oprettet.

Du kan finde flere oplysninger om en anden måde at oprette nye poster i forbindelse med en relateret post, under Bruge dyb indsætning.

Brug af ATOM

For eksempel, når en ny account-post oprettes ved hjælp af System.Data.Services.Client-biblioteket i administreret kode

HTTP-anmodning

POST <organization root>/xrmservices/2011/organizationdata.svc/AccountSet HTTP/1.1
Accept-Charset: UTF-8
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
Accept:  application/atom+xml,application/xml
Content-Type:  application/atom+xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 26629
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
xmlns="http://www.w3.org/2005/Atom">
  <category 
   scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" 
   term="Microsoft.Crm.Sdk.Data.Services.Account" 
  />
  <title type="text">New Account Created</title>
  <author>
    <name />
  </author>
  <updated>2010-07-22T22:51:50.0051481Z</updated>
  <id />
  <content type="application/xml">
    <m:properties>
[ Properties removed for brevity]
    </m:properties>
   </content>
</entry>

HTTP-svar

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 26756
Content-Type:  application/atom+xml;charset=utf-8
Location:  <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:49 GMT

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="<organization root>/XRMServices/2011/OrganizationData.svc/" 
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
xmlns="http://www.w3.org/2005/Atom">
  <id><organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')</id>
  <title type="text">New Account Created</title>
  <updated>2010-07-22T22:51:50Z</updated>
  <author>
    <name />
  </author>
  <link rel="edit" title="Account" href="AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')" />
[Links removed for brevity]
  <category 
   term="Microsoft.Crm.Sdk.Data.Services.Account" 
   scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" 
  />
  <content type="application/xml">
    <m:properties>
[Properties removed for brevity]
</m:properties>
  </content>
</entry>

Dette emne indeholder

Brug af JSON

For eksempel, når en ny firmapost oprettes ved hjælp af objektet XMLHttpRequest fra browseren.

HTTP-anmodning

POST <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet HTTP/1.1
Content-Type:  application/json; charset=utf-8
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
Accept:  application/json
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 25
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

{"Name":"Sample Account"}

HTTP-svar

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 17720
Content-Type:  application/json;charset=utf-8
Location: <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c')
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Fri, 23 Jul 2010 00:57:40 GMT

{
"d" : {
"__metadata": {
"uri": "<organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c')", 
"type": "Microsoft.Crm.Sdk.Data.Services.Account"
},
[Properties removed for brevity]
 }
}

Dette emne indeholder

Hentning af poster

HTTP GET bruges, når du henter poster. Når der angives et entydigt id for en bestemt post, hentes kun denne post. Ellers anvendes de indstillinger for systemforespørgsler, der er defineret, og op til 50 poster, der svarer til filtre for en hvilken som helst systemforespørgselsindstilling, vil blive hentet.

Dette emne indeholder

Brug af ATOM

For eksempel, når du henter en enkelt firmapost ved hjælp af System.Data.Services.Client-biblioteket i administreret kode.

HTTP-anmodning

GET <organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c') HTTP/1.1
Accept-Charset: UTF-8
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
Accept:  application/atom+xml,application/xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Connection: Keep-Alive
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

HTTP-svar

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 28231
Content-Type:  application/atom+xml;charset=utf-8
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:51 GMT

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="<organization root>/XRMServices/2011/OrganizationData.svc/" 
   xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
   xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
   xmlns="http://www.w3.org/2005/Atom">
  <id><organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')</id>
  <title type="text">New Account Created </title>
  <updated>2010-07-22T22:51:51Z</updated>
  <author>
    <name />
  </author>
  <link rel="edit" title="Account" href="AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')" />
[Links removed for brevity]
  <category 
   term="Microsoft.Crm.Sdk.Data.Services.Account" 
   scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" 
  />
  <content type="application/xml">
    <m:properties>
[Properties removed for brevity]
    </m:properties>
  </content>
</entry>

Dette emne indeholder

Brug af JSON

For eksempel, når du henter en firmapost ved hjælp af objektet XMLHttpRequest fra browseren.

HTTP-anmodning

GET <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Content-Type:  application/json; charset=utf-8
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
Accept:  application/json
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Connection: Keep-Alive
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

HTTP-svar

GET <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Content-Type:  application/json; charset=utf-8
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
Accept:  application/json
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Connection: Keep-Alive
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

Dette emne indeholder

Opdatering af poster

I OData, kan du enten bruge metoden PUT eller metoden MERGE til at opdatere poster.MERGE bruges til at undgå overbelastning af betydningen af PUT.

Et vellykket opdateringssvar indeholder HTTP-statuskoden 204 og returnerer ikke noget indhold.

Bemærk

Når du vil angive komplekse typeværdier i Microsoft Dynamics 365 til null, skal du indstille alle egenskaber for den komplekse type til null. Du kan finde flere oplysninger under Angive komplekse typer til null.

Bemærk

Nogle biblioteker indeholder muligvis ikke brødteksten i anmodningen, når du sender en PUT- eller MERGE-anmodning til serveren. Som en løsning understøtter OData Metodetunnelføring via POST ved hjælp af HTTP-operatoren for POST. Du kan bruge metodetunnelføring ved at sende en HTTP-handling for POST og indstille X-HTTP-Method-headeren til den HTTP-handling, du vil udføre. Når du vil sende en MERGE-anmodning, skal HTTP-handlingen være POST, og HTTP-headeren for X-HTTP-Method skal være MERGE.

Opdater ved hjælp af PUT

Vigtigt

Opdatering af poster ved hjælp af PUT erstatter den eksisterende post med de angivne data. Alle egenskabsværdier i posten tager enten de værdier, der er indeholdt i anmodningen, eller indstilles til deres standardværdier, hvis de ikke er medtaget i anmodningen. Links bliver ikke udskiftet.

Brug PUT, når du opdaterer individuelle egenskaber. Du kan finde flere oplysninger under Opdatere individuelle egenskaber

Opdater ved hjælp af MERGE

Den typiske opdateringslogik i Microsoft Dynamics 365 svarer til den funktionsmåde, der normalt defineres ved hjælp af MERGE. Egenskabsværdier, der er inkluderet i anmodningen, anvendes kun til disse egenskaber. Andre egenskabsdata ændres ikke.

Vigtigt

Medmindre du tager skridt til at afhjælpe dette problem, når proxyklasser i administreret kode bruges til at opdatere hentede objektposter, bruges MERGE, og alle egenskaber opdateres. Dette er tilfældet, selvom værdien af egenskaberne ikke ændres. Dette kan medføre uønskede bivirkninger, når andre hændelsesbaserede funktioner som arbejdsprocesser eller plug-ins registrerer, at egenskaben er blevet opdateret. Desuden registrerer overvågning, at egenskaben er blevet opdateret.

Endvidere, hvis en forekomst af et objekt instantieres i stedet for at blive hentet, returneres alle egenskaberne for objektet med MERGE-anmodningen. Alle egenskaber, der ikke er indstillet i koden, får værdien null. Disse null-værdier overskriver eventuelle eksisterende værdier for posten.

Du kan afhjælpe dette problem ved at implementere en hændelseshandler for hændelserne DataServiceContextReadingEntity og WritingEntity.

Dette emne indeholder

Brug af ATOM

For eksempel, når en firmapost opdateres ved hjælp af System.Data.Services.Client-biblioteket i administreret kode:

HTTP-anmodning

POST <organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c') HTTP/1.1
Accept:  application/atom+xml,application/xml
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
x-http-method: MERGE
Accept-Charset: UTF-8
Content-Type:  application/atom+xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 26753
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry 
   xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
   xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
   xmlns="http://www.w3.org/2005/Atom">
  <category 
   scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" 
   term="Microsoft.Crm.Sdk.Data.Services.Account" 
  />
  <title type="text">Account updated </title>
  <author>
    <name />
  </author>
  <updated>2010-07-22T22:51:51.0053481Z</updated>
  <id><organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')</id>
  <content type="application/xml">
    <m:properties>
[Properties removed for brevity]
    </m:properties>
  </content>
</entry>

HTTP-svar

HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:51 GMT

Dette emne indeholder

Brug af JSON

For eksempel, når en firmapost opdateres ved hjælp af objektet XMLHttpRequest fra browseren.

HTTP-anmodning

POST <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Accept:  application/json
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
x-http-method: MERGE
Content-Type:  application/json; charset=utf-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 117
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

{"Name":"Updated Sample","Telephone1":"555-0123","AccountNumber":"ABCDEFGHIJ","EMailAddress1":"someone1@example.com"}

HTTP-svar

HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Fri, 23 Jul 2010 00:57:41 GMT

Sletning af poster

Brug en POST-anmodning med X-HTTP-METHOD-headeren indstillet til DELETE og en URI-reference til posten, der skal slettes.

Bemærk

Selvom OData-specifikationen angiver, at en vellykket sletning skal returnere HTTP-statuskoden 200 (OK), returnerer Microsoft Dynamics 365-implementeringen 204 (intet indhold).

Du kan finde flere oplysninger under Tilknytte og fjerne tilknytningen af poster.

Dette emne indeholder

Brug af ATOM

For eksempel, når du sletter en firmapost ved hjælp af System.Data.Services.Client-biblioteket i administreret kode.

HTTP-anmodning

POST <organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c') HTTP/1.1
Accept:  application/atom+xml,application/xml
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
x-http-method: DELETE
Accept-Charset: UTF-8
Content-Type:  application/atom+xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 0
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

HTTP-svar

HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:54 GMT

Dette emne indeholder

Brug af JSON

For eksempel, når du sletter en firmapost ved hjælp af objektet XMLHttpRequest fra browseren.

HTTP-anmodning

POST <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Accept:  application/json
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
x-http-method: DELETE
Content-Type:  application/json; charset=utf-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 0
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

HTTP-svar

HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Fri, 23 Jul 2010 00:57:57 GMT

Dette emne indeholder

HTTP-statuskoder

Oplysninger om returnerede HTTP-statuskoder findes i OData endpoint Http status codes.

Se også

Brug OData-slutpunktet med webressourcer
Udføre yderligere datahandlinger, der bruger OData-slutpunkt
Brug OData-slutpunktet med Ajax og JScript-webressourcer
OData endpoint Http status codes

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret