2016-02-09 47 views
0

我是Valence API的新手,已制定了以下請求(請注意,我正在訪問分配給我們的sandboxu.brightspace.com實例作爲D2L的新客戶端) :Desire2Learn Valence API PUT在記錄存在時表示未找到

PUT /d2l/api/lp/1.6/users/1900?x_a ...

(AUTH信息不工作,我不包括在這裏)

內容/後機身

{ 
    "Activation": 
    { 
     "IsActive":"True" 
    }, 
    "userName":"NCU.A5", 
    "OrgDefinedId":"NCU.A5", 
    "FirstName":"NCU", 
    "MiddleName":"J", 
    "LastName":"A5", 
    "ExternalEmail":"[email protected]" 
} 

請注意,我做一個GET完全相同的網址,並將其成功地檢索如下:

{ 
    "OrgId":6607, 
    "UserId":1900, 
    "FirstName":"NCU", 
    "MiddleName":null, 
    "LastName":"A5", 
    "UserName":"NCU.A5", 
    "ExternalEmail":"[email protected]", 
    "OrgDefinedId":"NCU.A5", 
    "UniqueIdentifier":"NCU.A5", 
    "Activation":{"IsActive":true}, 
    "DisplayName":"NCU A5" 
} 

所以用戶標識是有效的。

但是,這個PUT請求返回一個404/Not Found。我回顧了Valance API在線文檔,它在我看來像請求塊具有所有正確的元素。這個請求應該把中間名從null更新爲「J」。

我相信我做錯了什麼,但我找不到它。

+0

我剛剛在我的測試系統上使用管理員帳戶嘗試了這個呼叫,並且我收到了200個成功。您是否已確認您在此呼叫下的帳戶具有對用戶記錄進行更改所需的權限?例如,一位教練馬y有權限獲取用戶記錄,但不能用PUT更新它們。 –

回答

0

我發現我的問題。我按照D2L示例代碼使用RestSharp來制定請求。我將PostBody設置爲json字符串。根據我們在CodeSur for RestSharp上發現的一個問題,它對字符串進行了反序列化,用引號(\「)替換了所有引號。我在檢查RestSession請求之前檢查了它,並且它沒有這些額外的字符,但它將它們放置在該請求被處理時

我註釋這一行:。 //串postBody = SimpleJson.SerializeObject(postBodyValues); 並改變了AddBody()接受序列化的對象和它的工作。