Изменение атрибута пользователя в элементе данных SharePoint с использованием HTTP - PullRequest
1 голос
/ 16 декабря 2011

Я использую (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, 
    "F\u00e4lligkeitsdatum": "\/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» должно быть «EXT \ rodney.rehm» (так как мне нужно имя пользователя). Пока что проблем нет.

Вопрос в том, как создать новый или обновить существующий объект с другим пользователем для «ZugewiesenAn» (поле «Пользователь / группа»)?

Я пробовал:

  • Отправка имени пользователя в качестве значения "ZugewiesenAn" или "ZugewiesenAnId" приводит к неверному запросу.
  • Запрос http://example.org/_vti_bin/People.asmx (SOAP: SearchPrincipals) выдает только числовые идентификаторы для людей, которые действительно работали со списком. Если я запрашиваю имя пользователя, который ранее не входил в этот список SharePoint, я получаю идентификатор -1.

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Я не смог узнать, как добавить пользователей в список пользователей через REST.Однако вы можете использовать запрос SOAP ResolvePrincipal ( пример ) - который выполняет эту работу!

1 голос
/ 19 декабря 2011

Я не являюсь парнем из SharePoint и занимаюсь в основном REST и OData.Но подумайте, что API REST OData для SharePoint следует общим правилам для REST OData.

Общие правила для REST и OData - использовать разные HTTP-глаголы для разных операций.Операции чтения, создания, обновления и удаления сопоставляются непосредственно с HTTP-глаголами GET, POST, PUT и DELETE.

Итак, вы получаете своего пользователя с помощью HTTP-глагола GET по URI http://example.org/mytest/_vti_bin/listdata.svc/Benutzerinformationsliste(29)

Чтобы удалить этого пользователя, используйте глагол DELETE для того же URI и идентификатора пользователя с пустым телом HTTP-сообщения.

Для создания пользовательского HTTP-глагола POST, того же URI и json в теле сообщения.Также при создании идентификатора указывать не нужно (кроме случаев, когда идентификатор не увеличивается автоматически в базах данных).Должен быть установлен тип содержимого для HTTP-сообщения: application / json для JSON.

Та же ситуация с обновлением - PUT, тот же URI http://example.org/mytest/_vti_bin/listdata.svc/Benutzerinformationsliste(29)

и json в теле сообщения HTTPс типом содержимого: application / json.

Формат json должен быть таким же, как вы получили.

{    
    "InhaltstypID": "0x010A000719C31710976A48867763D86F6586E0", 
    "Name": "Rehm Rodney", 
    "Konto": "EXT\\rodney.rehm", 
    "ID": 29, 
    "Inhaltstyp": "Person", 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...