ModifyAttachments调用使用c#客户端库返回400错误
本文关键字:返回 错误 客户端 调用 ModifyAttachments | 更新日期: 2023-09-27 18:09:48
当学生提交作业时,下面的代码适用于大多数学生,但是对于一些学生,它会抛出一个带有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#客户端库目前还不支持显示详细的错误消息。
你知道会发生什么吗?如何排除故障?
a400表示请求格式错误。也就是说,客户端发送给服务器的数据流不符合规则。
所以我要做的是解决这个问题是启动Fiddler,运行代码并将请求隔离到端点。然后可能将无效请求与有效请求进行比较,并确定差异。
注意,如果在状态为TURNED_IN
的提交上调用modifyAttachments
,将会得到一个400错误和一个无效参数异常。
从你的代码中我看不出你的一些学生的提交是否已经上交了。在我的情况下,我在调用turnIn
并获得相同的错误后添加附件。颠倒调用的顺序解决了这个问题。