微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

添加列表项时使用 MS Graph 出现 400 错误请求

如何解决添加列表项时使用 MS Graph 出现 400 错误请求

我一生都无法成功添加 SharePoint 列表项。我过去使用过,现在使用 Invoke-WebRequest 或 Invoke-RestMethod 很难过。我可以毫无问题地更新 (PATCH),并且可以对相同的站点、列表、项目等执行各种 GET 操作。

这是我的实际 HTTP POST 请求的提琴手捕获(Guid 捏造的):

POST https://graph.microsoft.com/v1.0/sites/2df3a5af-979d-46d6-b24d-14e4e4b58aa9/lists/2252b849-53f9-4816-bc0b-d9183357c702/items HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJ0f...
User-Agent: MSGraPHPSEssentials/0.4.0
Host: graph.microsoft.com
Content-Length: 537

{
    "Fields":  {
                   "AccountStatus":  "Enabled","displayName":  "Fictional User 1","UserId":  "67853e89-65a9-431d-a3b1-1d60ab74dc1f","AdobjectGuid":  "56752e89-65a9-431d-a3b1-1d61ab78dc1f","AccountCreated":  "2019-03-12","AAdobjectId":  "8df5db8d-1d7a-4b35-b498-138eef2946fa","AccountType":  "AD-Synced","ADLastlogonDate":  "2020-08-25"
               }
}

对于显示的每个字段/列,SPO 列表上的内容类型是“单行文本”或“日期和时间”,在任何一种情况下,都不需要数据。列表中没有其他列是必需的(在我对此进行故障排除时是故意的)。

任何人都可以发现任何明显会导致我收到 400 Bad Request 并且提供的唯一附加信息是“无效请求”的内容

这是一个示例响应的提琴手捕获:

HTTP/1.1 400 Bad Request
Date: Thu,29 Apr 2021 14:26:08 GMT
Content-Type: application/json
Cache-Control: no-cache
transfer-encoding: chunked
Strict-Transport-Security: max-age=31536000
request-id: 87190763-4bfe-4a88-a69e-154fd60aad81
client-request-id: 87190763-4bfe-4a88-a69e-154fd60aad81
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"East US","Slice":"E","Ring":"5","ScaleUnit":"004","RoleInstance":"BL02EPF000035AB"}}

da
{"error":{"code":"invalidRequest","message":"Invalid request","innerError":{"date":"2021-04-29T14:26:08","request-id":"87190763-4bfe-4a88-a69e-154fd60aad81","client-request-id":"87190763-4bfe-4a88-a69e-154fd60aad81"}}}
0

最后,这里是成功的 MS Graph 请求返回到 /sites/<ID>/lists/<ID>?Expand=Columns 的列:

>$columns.columns |select Name,displayName,ReadOnly,required

name                      displayName             readOnly required
----                      -----------             -------- --------
ManagerdisplayName        ManagerdisplayName         False    False
ManagerEmail              ManagerEmail               False    False
Ignore                    Ignore                     False    False
UserId                    UserId                     False    False
Title                     Title                      False    False
ComplianceAssetId         Compliance Asset Id         True    False
IgnoreReason              IgnoreReason               False    False
AdobjectGuid              AdobjectGuid               False    False
AAdobjectId               AAdobjectId                False    False
ADLastlogonDate           ADLastlogonDate            False    False
AADLastSignIn             AADLastSignIn              False    False
disabledDate              disabledDate               False    False
ReEnabledDate             ReEnabledDate              False    False
JobTitle                  JobTitle                   False    False
Status                    Status                     False    False
ResolvedReason            ResolvedReason             False    False
NewAADLastSignIn          NewAADLastSignIn           False    False
AssignedLicenses          AssignedLicenses           False    False
AADCreationType           AADCreationType            False    False
AccountCreated            AccountCreated             False    False
displayName               displayName                False    False
Email                     Email                      False    False
AccountType               AccountType                False    False
NewADLastlogonDate        NewADLastlogonDate         False    False
ID                        ID                          True    False
ContentType               Content Type               False    False
Modified                  Modified                    True    False
Created                   Created                     True    False
Author                    Created By                  True    False
Editor                    Modified By                 True    False
_UIVersionString          Version                     True    False
Attachments               Attachments                False    False
Edit                      Edit                        True    False
LinkTitleNoMenu           Title                       True    False
LinkTitle                 Title                       True    False
DocIcon                   Type                        True    False
ItemChildCount            Item Child Count            True    False
FolderChildCount          Folder Child Count          True    False
_ComplianceFlags          Label setting               True    False
_ComplianceTag            Retention label             True    False
_ComplianceTagWrittenTime Retention label Applied     True    False
_ComplianceTagUserId      Label applied by            True    False
_IsRecord                 Item is a Record            True    False
AppAuthor                 App Created By              True    False
AppEditor                 App Modified By             True    False

我的问题是 100% 只有添加新项目。我希望返回的错误响应中有更多有用的信息。请注意,如果我尝试通过 $batch 端点执行此操作,则会得到相同的行为。这是可用的错误信息:

>$test.responses.body.Error

code           message         innerError
----           -------         ----------
invalidRequest Invalid request @{date=2021-04-29T14:41:34; request-id=cdf96c25-41e1-437b-9698-64389a2dc36b; client-request-id=cdf96c25-41e1-437b-9698-64389a2dc36b}

...再次只是“无效请求”:(.

解决方法

可耻的是,这个问题只是我身体中“Fields”中的大写“F”。它区分大小写(显然)。 “领域”解决了它。我打算删除这个问题,但如果它可能对某人有帮助,我会离开它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?