MS Graph批处理创建列表项(SPO)无效的批处理有效载荷格式

时间:2020-10-14 01:05:56

标签: json microsoft-graph-api

我确实在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都是假货。

1 个答案:

答案 0 :(得分:0)

我的问题最终是我需要使用ConvertTo-Json的-Depth参数来成功捕获我身体的所有内容。深度为5级(请求:[每个请求:{正文:{字段:{字段名称/值}}}])。

这只是POST方法请求的一个问题,因为然后需要一个主体,在这种情况下,该主体是用于添加SPO列表项的,该主体需要以下字段:带有子名称的键以及列表的列/单元格的值。 / p>

相关问题