0

以下代码适用于教室中的大多数学生提交作业时,但它会引发异常并为某些学生抛出 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# 客户端库目前还不支持显示详细的错误消息。

关于可能发生的事情有什么想法吗?如何排除故障?

4

2 回答 2

1

400 表示请求格式不正确。也就是说,客户端向服务器发送的数据流不符合规则。

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

于 2016-09-30T03:58:48.903 回答
0

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

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

于 2021-05-24T22:16:07.637 回答