2016-05-17 58 views
0

我目前有一些代碼使用http補丁通過2016 web api發送Microsoft CRM數據。當我的有效載荷包含一個文本或int數據類型時,它工作得很好,但是當有效載荷包含查找記錄時,我無法獲得超過400個錯誤請求的任何響應。使用Microsoft CRM 2016 Web API更新類型查找字段時遇到問題

下面是幾個,我試過有效載荷的實例(結構改變sentitive數據)

payload = {"new_lastweblocation": "Midlothian" } 
payload = {"[email protected]" : "https://crmnaorgXXXX.crm.dynamics.com/api/data/v8.0/new_locations(1234578-a588-e511-8105-c4346bace18c)"} 
payload = {"[email protected]" : "https://crmnaorgXXXX.crm.dynamics.com/api/data/v8.0/new_locations(1234578-a588-e511-8105-c4346bace18c)"} 

基本上我已經試過路過明文,一個GUID的記錄,一個GUID的關係,通過odata.bind鏈接的一個guid等。 很明顯,我的霰彈槍方法和400錯誤意味着我從根本上誤解了實體在2016 web api中的處理方式。如果您有任何建議,請告訴我。

回答

2

我結束了使用this request。我遇到的主要問題是我不知道單值導航屬性是什麼。要找到我最終使用this request。我改變了在url中選擇要選擇=「*」

原始地址

GET [Organization URI]/api/data/v8.1/incidents(39dd0b31-ed8b-e511-80d2-00155d2a68d4)?$select=title,customerid_value&$expand=customerid_contact($select=fullname) 

我的URL

GET [Organization URI]/api/data/v8.1/incidents(39dd0b31-ed8b-e511-80d2-00155d2a68d4)?$select=* 

當使用GET請求,試圖找到單值導航物業請務必添加'Prefer':'odata.include-annotations"*"。我無法獲取首選項標頭,直到將其放在我的授權標頭之前。

最後,一旦我從獲取請求中得到響應,我查找了我在@Microsoft.Dynamics.CRM.associatednavigationproperty末尾查找的變量,並且使用了與之相關的值。在我的情況下,字段名稱是new_lastweblocation,但單值導航屬性是new_LastWebLocation

3

更新時,MSDN上列出的associating entities on create的方法也適用。我(分別爲其中的GUID已被替換現有客戶和聯繫人的GUID)測試了以下查詢在2016演示環境沒有問題:

PATCH [Organization URI]/api/data/v8.0/accounts/(00000000-0000-0000-0000-000000000001) HTTP/1.1 
Content-Type: application/json; charset=utf-8 
OData-MaxVersion: 4.0 
OData-Version: 4.0 
Accept: application/json 

{ 
"name":"Sample Account", 
"[email protected]":"/contacts(00000000-0000-0000-0000-000000000001)" 
} 

你能否通過驗證開始,這個外的開箱在使用自定義實體查找調試特定問題之前,用例可以正常工作嗎?

+0

再次閱讀文檔後,我嘗試了幾件事情,最後不得不使用單值導航屬性 – mucle6