我确实在C#中看到了同样的错误,但有一个悬而未决的问题,但是我使用的是PowerShell,并且使用POST而不是PATCH,所以我打开了一个单独的问题。
使用JSON批处理时出现问题,尤其是当我包含Content-Type的标头时,会收到:
Invoke-RestMethod : {
"error": {
"code": "BadRequest",
"message": "Invalid batch payload format.",
"innerError": {
"date": "2020-10-14T00:25:46",
"request-id": "aa535dbb-efe8-450e-911d-143554ed9027",
"client-request-id": "aa535dbb-efe8-450e-911d-143554ed9027"
}
}
}
我首先完全错过了包含标头的信息,并收到错误消息:
{
"error": {
"code": "BadRequest",
"message": "Write request id : 2 does not contain Content-Type header or body.",
"innerError": {
"date": "2020-10-14T00:46:58",
"request-id": "3601be6d-a861-4947-936b-451cd9de80c3",
"client-request-id": "3601be6d-a861-4947-936b-451cd9de80c3"
}
}
}
我对https://graph.microsoft.com/v1.0/$batch的HTTP请求的正文是一个PSCustomObjects数组,如下所示:
id : 1
method : POST
url : sites/8c3cb1ef-4116-b0e4-6d0b-25d0f333a4ed/lists/a2b2d34e-6d32-df22-d562-472d3d8385d2/items
body : {
"fields": {
"DisplayName": "user1@contoso.com",
"CreatedDateTime": "2019-10-13",
"UserId": "c963d785-59fc-4384-5e7d-d466=2118e3347",
"UserType": "Guest",
}
}
headers : {
"Content-Type": "application/json"
}
我发现奇怪的是,当我省略标题时,有效负载似乎还可以,并且看到没有提供Content-Type。一旦将其添加进来,那么突然的有效负载就无法正常运行。
如果我单独执行请求,则所有相同的数据也可以(在SPO列表中创建的项目没有问题)。我觉得这个事实证实了问题不在于体内的领域。
批处理GET请求时(例如,批处理100个auditLogs / signIns请求),我没有任何问题。这些本质上是相同的有效负载,没有任何正文/标题,所以只有id,url和method。
有没有人遇到过这种情况并找到了解决方案?
PS。 Guid都是假货。
答案 0 :(得分:0)
我的问题最终是我需要使用ConvertTo-Json的-Depth参数来成功捕获我身体的所有内容。深度为5级(请求:[每个请求:{正文:{字段:{字段名称/值}}}])。
这只是POST方法请求的一个问题,因为然后需要一个主体,在这种情况下,该主体是用于添加SPO列表项的,该主体需要以下字段:带有子名称的键以及列表的列/单元格的值。 / p>