0

我目前正在使用 c# 从 org unit id 获取课程设置。

我对 D2L valence 是全新的。我有应用 ID/密钥对和用户 ID/密钥对。

我将输入组织单位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 代码。而且,我正在尝试调用它。网址和主要代码如下:

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

GET(url);

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

另外,我试过这个网址:

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

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

我有应用 ID/密钥对和用户 ID/密钥对。

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

在此先感谢,菲利普

4

1 回答 1

0

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

如果您使用的是 C#,我建议您使用Nuget上的 Valence SDK来生成适当的 URL。查看https://github.com/Brightspace/valence-sdk-dotnet/tree/master/samples/Basic以获取使用 SDK 的示例项目,具体而言,https://github.com/Brightspace/valence-sdk -dotnet/blob/master/samples/Basic/Basic/Controllers/HomeController.cs展示了如何使用 SDK 方法发出 whoami 请求。

于 2015-03-17T17:03:49.560 回答