【问题标题】:Updating Sharepoint metadata using REST api gives 400 bad request error使用 REST api 更新 Sharepoint 元数据会出现 400 错误请求错误
【发布时间】:2020-06-22 12:27:16
【问题描述】:

我正在尝试使用我的 Delphi 程序中的 Indy TidHTTP 组件更新 Sharepoint 文件的元数据。

在这个程序中,我成功地完成了我需要对 Sharepoint 文件执行的所有其他操作(创建/重命名/删除/编辑/结帐等)。但是每当我尝试更新一些元数据属性时,我都会收到“400 Bad Request”异常。 我知道我的 RequestDigest 字符串是正确的,因为我能够将新内容上传到文件中。

我看到了许多类似的问题报告,并尝试了所有建议,但均未成功。 (一个建议是将文件作为列表项访问,而不是使用文件 url,我在下面的代码中已经这样做了。)

var
   str,body,MyUrl: string;
   stream: TStringStream;
begin
   MyUrl:=MySite+'_api/web/Lists/getByTitle(''CM Library'')/Items(2)';
   body:='{"__metadata":{"type":"SP.Data.CM_x0020_LibraryItem"},"Title":"UpdatedTitle"}';
   stream := TStringStream.Create(body, TEncoding.UTF8);
   try
      IdHTTP.Request.Accept:='application/json;odata=verbose';
      IdHTTP.Request.ContentType:='application/json';
      IdHTTP.Request.ContentLength:=stream.size;
      IdHTTP.Request.CustomHeaders.Values['X-RequestDigest']:=RequestDigest;
      IdHTTP.Request.CustomHeaders.Values['IF-MATCH']:='*';
      IdHTTP.Request.CustomHeaders.Values['X-HTTP-Method']:='MERGE';
      try
        str := IdHTTP.Post(MyUrl,stream);
      except
         on E : Exception do
            ShowMessage('Exception: '+E.Message);  
      end;
   finally
     stream.Free;
   end;
    // Displays 'Exception: HTTP/1.1 400 Bad Request'

【问题讨论】:

    标签: rest delphi sharepoint metadata indy


    【解决方案1】:

    我找到了!我需要将“;odata=verbose”添加到 Request.ContentType(以及 Request.Accept)

    很抱歉给社区带来麻烦,但我为此苦苦挣扎了好几天!!

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      相关资源
      最近更新 更多