我使用(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",
}