使用Microsoft Graph REST API更新Microsoft Planner任务?

问题描述

我认为这可能是一个简单的引号转义问题,但无法解决

我正在尝试使用带有REST API的CURL更新Microsoft计划程序任务。我可以创建任务(使用Microsoft Graph API从名为FileMaker的自定义应用程序到使用Microsoft Graph API的Microsoft Planner)没有问题,但是当我尝试更新Planner任务时,出现错误消息“必须为这种类型的If-Match标头指定请求。”但是我包含了If-Match标头,只是可能无法正确输入。

URL为: “ https://graph.microsoft.com/v1.0/planner/tasks/”和$ microsoftplannerTaskID

我在FileMaker中输入的CURLOPTIONS是...

“-X PATCH”& “ -H”授权:Bearer“&$$ userToken&”“”& “ -H”内容类型:application / json“”& “ -H”如果匹配:“&$ microsoftPlannerTasketag&”“”& “ -d @ $ PlannerTaskDetails”

最终看起来像这样…… -X PATCH -H“授权:承载wEXu k_QQY” -H“内容类型:application / json” -H“如果匹配: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更改为在引号前面加一个斜杠

-H“如果匹配:” JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc =“”

我在Filemaker的脚本调试器中收到错误10“要求的数据丢失”,并且url语句的插入没有响应。不过很有道理,因为它被读为“ if-match:”

同样的事情,如果我重新添加W / -H“如果匹配:W /” JzEtVGFzayAgQEBAQEBAQEBAQEBAQEBARCc =“” 也会给我错误10

如果您有任何想法,我将非常感谢您的帮助!

解决方法

尝试一下:

function getPhoto()
cd('C:\Users\Gianl\Documents\MATLAB\app\test\Images');
        
[filename,filepath] = uigetfile({'*.*;*.jpg;*.png;*.bmp;*.oct'},'Select File to Open');

cd('C:\Users\Gianl\Documents\MATLAB\app');

 app = app2;
 app.fullname = [filepath,filename];
 app.ImageFile = imread(app.fullname);
 end