Desire2Learn Valence API PUT在记录存在时说Not Found

时间:2016-02-09 17:03:29

标签: desire2learn

我是Valence API的新手,并制定了以下请求(请注意我正在访问作为D2L的新客户端分配给我们的sandboxu.brightspace.com实例):

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

(身份验证信息确实有效,我不在此处包含它)

内容/帖子正文

{
    "Activation":
    {
        "IsActive":"True"
    },
    "userName":"NCU.A5",
    "OrgDefinedId":"NCU.A5",
    "FirstName":"NCU",
    "MiddleName":"J",
    "LastName":"A5",
    "ExternalEmail":"NCU.A5@desire2learncom.desire2learndemo.com"
}

请注意,我使用完全相同的网址进行GET,并成功检索以下内容:

{
    "OrgId":6607,
    "UserId":1900,
    "FirstName":"NCU",
    "MiddleName":null,
    "LastName":"A5",
    "UserName":"NCU.A5",
    "ExternalEmail":"NCU.A5@desire2learncom.desire2learndemo.com",
    "OrgDefinedId":"NCU.A5",
    "UniqueIdentifier":"NCU.A5",
    "Activation":{"IsActive":true},
    "DisplayName":"NCU A5"
}

因此用户标识有效。

但是,此PUT请求返回404 / Not Found。我查看了Valance API在线文档,它看起来像请求块具有所有正确的元素。此请求应将中间名从null更新为“J”。

我确信我做错了但我找不到。

1 个答案:

答案 0 :(得分:0)

我发现了我的问题。我根据D2L示例代码使用RestSharp来制定请求。我将PostBody设置为json字符串。根据我们在CodeGur for RestSharp上发现的问题,它将字符串重新序列化,用转义引号(\“)替换所有引号。我在发送之前检查了RestSharp请求,并且它没有这些额外的字符,但它在处理请求时将它们放入。

我评论了这一行:  // string postBody = SimpleJson.SerializeObject(postBodyValues); 并更改了AddBody()以接受反序列化的对象并且它有效。