0

Desire2Learn で CreateCourseOffering を作成するための API を作成しました。

http://docs.valence.desire2learn.com/res/course.html#post--d2l-api-lp-(D2LVERSION-version)-courses-

そのために上記のAPIを呼び出しました。コードは正常に実行され、作成されたコースが見つかりません。以下にコードを貼り付けます。何が悪いのか提案してください

私の入力

        objCourse.Code = "1234567";
        objCourse.Name = "TCS_TestCourse2";
        objCourse.path = "/content/Traning";
        objCourse.ForceLocale = false;
        objCourse.ShowAddressBook = false;
        objCourse.CourseTemplateId = 10;

マイコード

    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();
4

1 に答える 1

1

サーバー側での JSON 解析では、null であってもすべてのフィールドを含める必要があります。これらのフィールドのいくつかが欠けているようです。

次の JSON ブロックがコース オファリングを正常に作成したことをローカルで確認しました。null フィールドを省略すると、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 が有効な組織番号であると仮定します。

I would change this section of code to reflect that:

        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;
于 2012-05-08T23:58:42.840 に答える