ModifyAttachments调用使用C#客户端库返回400错误

时间:2016-09-30 03:44:19

标签: c# google-classroom

以下代码适用于教室中的大多数学生提交作业时,但是如果一些学生出现400错误则会引发异常:

var classroom = GetClassroomService();

var studentSubmissionsResponse = classroom.Courses.CourseWork.StudentSubmissions.List(courseId, courseWorkId).Execute();
var submission = studentSubmissionsResponse.StudentSubmissions.FirstOrDefault(s => s.AssociatedWithDeveloper ?? false);

var modifyAttachmentRequest = new global::Google.Apis.Classroom.v1.Data.ModifyAttachmentsRequest();

var link = new global::Google.Apis.Classroom.v1.Data.Link() { Url = url };
var attachment = new global::Google.Apis.Classroom.v1.Data.Attachment() { Link = link };

modifyAttachmentRequest.AddAttachments = new System.Collections.Generic.List<global::Google.Apis.Classroom.v1.Data.Attachment>();
modifyAttachmentRequest.AddAttachments.Add(attachment);

submission = classroom.Courses.CourseWork.StudentSubmissions.ModifyAttachments(modifyAttachmentRequest, courseId, courseWorkId, submission.Id).Execute();

/// submission code is after this; the exception is thrown by the call above

例外是:

The service classroom has thrown an exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Request contains an invalid argument. [400]
Errors [
    Message[Request contains an invalid argument.] Location[ - ] Reason[badRequest] Domain[global]
]

不幸的是,C#客户端库目前还不支持显示详细的错误消息。

关于可能发生的事情的任何想法?如何排除故障?

2 个答案:

答案 0 :(得分:1)

A 400表示请求格式错误。换句话说,客户端发送到服务器的数据流不符合规则。

所以我要做的就是解决这个问题,就是启动Fiddler,运行代码并将请求隔离到端点。然后可能将无效请求与有效请求进行比较并确定差异。

答案 1 :(得分:0)

请注意,如果您对状态为 modifyAttachments 的提交调用 TURNED_IN,您将收到 400 错误和无效参数异常。

我无法从您的代码中判断您的某些学生提交的内容是否已上交。就我而言,我在调用 turnIn 后添加了附件并收到相同的错误。颠倒调用顺序解决了它。