我目前正致力于使用c#从org unit id获取课程。
我是D2L价的全新品牌。我有应用ID /密钥对和用户ID /密钥对。
我将输入org unit 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)禁止。
另外,我已尝试过这个网址:
string url = "http://lms.valence.desire2learn.com/d2l/api/lp/1.0/courses/644849";
这一次,我收到了这个错误(对象引用未设置为对象的实例。)
我有应用ID /密钥对和用户ID /密钥对。
我该怎么做才能解决这个问题,最终得到课程。
提前致谢,Phillip
答案 0 :(得分:0)
您获得403禁止的原因是您没有在查询字符串上发送适当的标识符和签名以允许您的请求进行身份验证(请参阅http://docs.valence.desire2learn.com/basic/auth.html#id4)。
如果您使用的是C#,我建议您使用Nuget上的Valence SDK生成相应的网址。使用SDK查看https://github.com/Brightspace/valence-sdk-dotnet/tree/master/samples/Basic示例项目,具体来说,https://github.com/Brightspace/valence-sdk-dotnet/blob/master/samples/Basic/Basic/Controllers/HomeController.cs,展示了如何使用SDK方法发出whoami请求。