我已经编写了一个API来在Desire2Learn中创建CreateCourseOffering
http://docs.valence.desire2learn.com/res/course.html#post--d2l-api-lp-(D2LVERSION-version)-courses-
我为此调用了上述API.Code非常好,我没有找到任何创建过的课程。请在下面编写我的代码。请说明它有什么错误
我的输入
objCourse.Code = "1234567";
objCourse.Name = "TCS_TestCourse2";
objCourse.path = "/content/Traning";
objCourse.ForceLocale = false;
objCourse.ShowAddressBook = false;
objCourse.CourseTemplateId = 10;
mycode的
UriBuilder baseUri = new UriBuilder(userContext.CreateAuthenticatedUri("/d2l /api/lp /1.0/courses/", "POST"));
CreateCourse objCreateCourse = new CreateCourse();
objCreateCourse.Code = objCourse.Code;
objCreateCourse.Name = objCourse.Name;
objCreateCourse.path = objCourse.path ;
objCreateCourse.ForceLocale = objCourse.ForceLocale;
objCreateCourse.ShowAddressBook = objCourse.ShowAddressBook;
objCreateCourse.CourseTemplateId = objCourse.CourseTemplateId;
JavaScriptSerializer serializer1 = new JavaScriptSerializer();
string createCourseData = serializer1.Serialize(objCreateCourse);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(baseUri.Uri);
request.Method = "POST";
request.AllowAutoRedirect = false;
byte[] bytes;
bytes = System.Text.Encoding.ASCII.GetBytes(createCourseData);
request.ContentLength = bytes.Length;
request.ContentType = "application/json";
Stream dataStream = request.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(bytes, 0, bytes.Length);
// Close the Stream object.
dataStream.Close();
答案 0 :(得分:1)
服务器端的JSON解析需要包含所有字段,即使它们为空。看起来你只是缺少一些这样的领域。
我在本地验证了以下JSON块成功创建了课程产品。当我省略空字段时,它导致400 Bad Request:
var data = {
'Name': "TCS_TestCourse2",
'Code': "1234567",
'Path': "/content/Training",
'CourseTemplateId': 10,
'SemesterId': null,
'StartDate': null,
'EndDate': null,
'LocaleId': null,
'ForceLocale': false,
'ShowAddressBook': false
};
假设CourseTemplateId:10是有效的orgunit号。
我会更改此部分代码以反映:
CreateCourse objCreateCourse = new CreateCourse();
objCreateCourse.Code = objCourse.Code;
objCreateCourse.Name = objCourse.Name;
objCreateCourse.path = objCourse.path ;
objCreateCourse.ForceLocale = objCourse.ForceLocale;
objCreateCourse.ShowAddressBook = objCourse.ShowAddressBook;
objCreateCourse.CourseTemplateId = objCourse.CourseTemplateId;
objCreateCourse.StartDate = null;
objCreateCourse.EndDate = null;
objCreateCourse.LocaleId = null;
objCreateCourse.SemesterId = null;