使用HTTP协议修改SharePoint数据项的User-Attribute



我使用(JSON) HTTP接口与SharePoint通信。通信本身是通过cURL和PHP中的一个方便包装器完成的。当我想将数据推送到SP时,问题出现了。

因为我不是Microsoft/SharePoint的家伙,我缺少适当的词汇来解释我的需求。因此,我将使用从SharePoint收到的数据来演示。

GET http://example.org/mytest/_vti_bin/listdata.svc/Aufgaben(2)返回以下(由我截断的)数据:

{
  "d" : {
    "__metadata": {
      "uri": "http://example.org/mytest/_vti_bin/listdata.svc/Aufgaben(2)", 
      "etag": "W/"5"", 
      "type": "Microsoft.SharePoint.DataService.AufgabenItem"
    }, 
    "ID": 2, 
    "InhaltstypID": "0x010800821BC29B80192B4C960A688416597526", 
    "Inhaltstyp": "Aufgabe", 
    "Titel": "Neuer Titel", 
    "ZugewiesenAn": {
      "__deferred": {
        "uri": "http://example.org/mytest/_vti_bin/listdata.svc/Aufgaben(2)/ZugewiesenAn"
      }
    }, 
    "ZugewiesenAnId": 29, 
    "Fu00e4lligkeitsdatum": "/Date(1323993600000)/"
  }
}

"ZugewiesenAn"是一个用户。如果我查询延迟的值,我得到(再次被我截断)

{
  "d" : {
    "__metadata": {
      "uri": "http://example.org/mytest/_vti_bin/listdata.svc/Benutzerinformationsliste(29)", 
      "etag": "W/"1"", 
      "type": "Microsoft.SharePoint.DataService.BenutzerinformationslisteItem"
    }, 
    "InhaltstypID": "0x010A000719C31710976A48867763D86F6586E0", 
    "Name": "Rehm Rodney", 
    "Konto": "EXT\rodney.rehm", 
    "ID": 29, 
    "Inhaltstyp": "Person", 
  }
}

所以我可以看到"ZugewiesenAn"的值应该是"EXTrodney"。rehm"(因为我需要用户名)。到目前为止,没有问题。

问题是我如何为"ZugewiesenAn"(用户/组字段)创建一个新的或更新一个具有不同用户的现有对象?

我试过:

  • 发送用户名作为"ZugewiesenAn"或"ZugewiesenAnId"的值会导致错误的请求。
  • 查询http://example.org/_vti_bin/People.asmx (SOAP: SearchPrincipals)只产生实际使用列表的人员的数字id。如果我查询之前没有登录到SharePoint列表的用户名,我得到ID -1。

我不知道如何通过REST将用户添加到用户列表。不过,您可以使用SOAP ResolvePrincipal请求(示例)——它可以完成这项工作!

我不是SharePoint的家伙,主要关注REST和OData。但是我认为SharePoint的REST OData API遵循了REST OData的通用规则。

REST和OData的通用规则是对不同的操作使用不同的HTTP动词。读取、创建、更新和删除操作直接映射到GET、POST、PUT和delete HTTP动词。

所以,你通过GET HTTP谓词在URI上http://example.org/mytest/_vti_bin/listdata.svc/Benutzerinformationsliste(29)获取用户

要删除此用户,请在相同的URI和用户id上使用动词delete,并使用空HTTP消息体。

创建用户HTTP谓词POST,在消息体中使用相同的URI和json。此外,在创建ID时不应该指定(除非ID在数据库中没有自动增加)。HTTP消息的Content-Type应该设置为:application/json。

与update - PUT相同的情况,相同的URIhttp://example.org/mytest/_vti_bin/listdata.svc/Benutzerinformationsliste (29)

和json在HTTP消息体中,content-type:application/json.

json的格式应该和你收到的一样。

{    
    "InhaltstypID": "0x010A000719C31710976A48867763D86F6586E0", 
    "Name": "Rehm Rodney", 
    "Konto": "EXT\rodney.rehm", 
    "ID": 29, 
    "Inhaltstyp": "Person", 
}

最新更新