Valence D2l:来自 url 使用组织单位 ID 的课程

Valence D2l: Course Offrings from url using org unit id

我目前正在使用 C# 从组织单位 ID 获取课程。

我是 D2L 效价的新手。我有应用 ID/key 对和用户 ID/Key 对。

我要输入组织单位 ID,得到 json 响应,用 c# 解析 json 响应,并输出关联的课程代码和名称。

string GET(string url)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        try
        {
            WebResponse response = request.GetResponse();
            using (Stream responseStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                return reader.ReadToEnd();
            }
        }
        catch (WebException ex)
        {
            WebResponse errorResponse = ex.Response;
            using (Stream responseStream = errorResponse.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
                String errorText = reader.ReadToEnd();
                // log errorText
            }
            throw;
        }
    }

这是我的 GET 代码。而且,我正在尝试调用它。 url和主要代码如下:

string url = "http://test.ca/d2l/api/lp/1.0/courses/644849";

GET(url);

问题是我收到错误提示:远程服务器返回错误:(403)Forbidden。

此外,我试过这个 url:

string url = "http://lms.valence.desire2learn.com/d2l/api/lp/1.0/courses/644849";

这一次,我遇到了这个错误(对象引用未设置为对象的实例。)

我有应用 id/key 对和用户 id/key 对。

我应该怎么做才能解决这个问题并最终获得课程。

提前致谢,菲利普

您收到 403 禁止的原因是因为您没有在查询字符串中发送适当的标识符和签名以允许对您的请求进行身份验证(请参阅 http://docs.valence.desire2learn.com/basic/auth.html#id4)。

如果您使用的是 C#,我建议您使用 Nuget to generate appropriate URLs. Take a look at https://github.com/Brightspace/valence-sdk-dotnet/tree/master/samples/Basic for a sample project using the SDK, specifically, https://github.com/Brightspace/valence-sdk-dotnet/blob/master/samples/Basic/Basic/Controllers/HomeController.cs 上的 Valence SDK,展示了如何使用 SDK 方法发出 whoami 请求。