【发布时间】:2020-12-24 03:31:12
【问题描述】:
我认为这可能是一个简单的引号转义问题,但无法弄清楚。
我正在尝试使用带有 REST API 的 CURL 更新 microsoft planner 任务。我可以毫无问题地创建任务(从名为 FileMaker 的自定义应用程序到使用 Microsoft Graph API 的 Microsoft Planner),但是当我尝试更新计划程序任务时,我收到错误消息“必须为这种类型指定 If-Match 标头要求。”但我包含了 If-Match 标头,只是可能没有正确输入。
网址是: "https://graph.microsoft.com/v1.0/planner/tasks/" & $microsoftplannerTaskID
我在 FileMaker 中输入的 CURLOPTIONS 是 ...
"-X 补丁" & " -H "授权:承载" & $$userToken & """ & " -H "内容类型:应用程序/json"" & " -H "如果匹配:" & $microsoftPlannerTasketag & """ & " -d @$PlannerTaskDetails"
最终看起来像这样…… -X PATCH -H "授权:承载 wEXuk_QQY" -H "Content-Type: application/json" -H "If-Match: W/"JzEtVGFzayAgQEBAQEBAQBAQEBARCc="" -d @$PlannerTaskDetails
当我最初创建任务时,响应显示...... "@odata.etag":"W/"JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc="" 我在上面的 cURL 标头中使用它。但是……我正在剥离 W/ 和引号。 W/ 表示它是“弱”,我假设我们没有将它包含在 PATCH 标头中,但我确实尝试添加它但没有成功。
这是 Microsoft 的 UPDATE PLANNERTASK 参考资料…… https://docs.microsoft.com/en-us/graph/api/plannertask-update?view=graph-rest-1.0&tabs=http
我可以毫无问题地使用 POSTMAN 更新任务,但我不知道发送请求时它们的标头是什么样的。
我可以让它在 Postman 中工作,并且在那里我输入了 Plan ETag 变量这个...... W/"JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc="
我注意到邮递员的标题显示 etag 是 W/"JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc="
身体返回为 "@odata.etag": "W/"JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc="",
我的 curloption 变量一定是一个简单的语法问题,但我想不通。
我还尝试删除 If-Match 标头中的 W/,所以它看起来像这样: -H "如果匹配:"JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc=""
以及 If-Match 标头中的额外引号,因此看起来像这样: -H "如果匹配:JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc="
所有这些都会导致相同的“if-match”错误。
一件有趣的事情……如果我将 If-Match 更改为在引号前包含一个斜线
-H "如果匹配:"JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc=""
我在 Filemaker 的脚本调试器中收到错误 10 “requested data is missing”,并且从 url 语句中插入没有响应。不过是有道理的,因为它把它读作“if-match:”
如果我重新添加 W/ 也是一样的 -H "如果匹配:W/"JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc="" 也给我错误 10
如果您有任何想法,我将非常感谢您的帮助!
【问题讨论】:
标签: microsoft-graph-api restful-authentication filemaker microsoft-planner