用于检查传递参数Desire2Learn中的错误的API

时间:2012-05-07 12:02:51

标签: c# desire2learn

我已经编写了一个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();

1 个答案:

答案 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;