Обновление элементов SharePoint Online с использованием API SOAP / XML извне SharePoint - PullRequest
0 голосов
/ 03 марта 2020

Нам нужно обновить (CRUD) элементы списка SharePoint Online из автономного приложения вне SharePoint от сторонней компании.

Это приложение использует вызовы Soap / XML для вызова SP.

(внешнему) приложению удалось без проблем подключиться и обновить локальный список SharePoint 2010, но теперь мы выполняем переход на SharePoint Online.

Внешнее приложение может подключаться и просматривать элементы списка , но всегда выдает ошибку, когда мы пытаемся обновить элемент в списке в SharePoint Online

Вот (отредактированный) запрос Soap тело и ответ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.microsoft.com/sharepoint/soap/">
   <soapenv:Header/>
   <soapenv:Body>
      <soap:UpdateListItems>
         <soap:listName>XXXXXX GUID</soap:listName>
         <soap:updates>
            <Batch OnError="Continue" ListVersion="1" ViewName="XXX GUID CUT">
   <Method ID="1" Cmd="Update">
      <Field Name="ID">1002</Field>
      <Field Name="Received">1</Field>
      <Field Name="COMSBarcode">RL101150</Field>
      <Field Name="DateReceived">2020-03-03</Field>
      <Field Name="ReceivedBy">andras boros</Field>
      <Field Name="DefectsFaults" />
      <Field Name="Description">This is Box 20/1</Field>
   </Method>
   <Method ID="2" Cmd="Update">
      <Field Name="ID">1003</Field>
      <Field Name="Received">1</Field>
      <Field Name="COMSBarcode">RL101151</Field>
      <Field Name="DateReceived">2020-03-03</Field>
      <Field Name="ReceivedBy">andras boros</Field>
      <Field Name="DefectsFaults" />
      <Field Name="Description">This is Box 20/2</Field>
   </Method>
   <Method ID="3" Cmd="Update">
      <Field Name="ID">1004</Field>
      <Field Name="Received">1</Field>
      <Field Name="COMSBarcode">RL101152</Field>
      <Field Name="DateReceived">2020-03-03</Field>
      <Field Name="ReceivedBy">andras boros</Field>
      <Field Name="DefectsFaults" />
      <Field Name="Description">This is Box20/3</Field>
   </Method>
</Batch>
         </soap:updates>
      </soap:UpdateListItems>
   </soapenv:Body>
</soapenv:Envelope>
4:02
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <UpdateListItemsResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/">
         <UpdateListItemsResult>
            <Results>
               <Result ID="1,Update">
                  <ErrorCode>0x81020026</ErrorCode>
                  <ErrorText>The list that is referenced here no longer exists.</ErrorText>
                  <z:row ows_Title="I changed it online (Andras Boros)" ows_T_x002d_Code="X91" ows_BoxNo="20.0000000000000" 
                  {TL:DR}
                  ows_SMTotalFileCount="1002;#0" xmlns:z="#RowsetSchema"/>
               </Result>
               {TL:DR}
             </Results>
            </UpdateListItemsResult>
        </UpdateListItemsResponse>
    </Body>
</soap:envelope/>

Возможно ли обновить элементы списка SharePoint Online из отдельного веб-приложения в совершенно другой Doamin?

И как бы мы go об обработке аутентификации.

Любая помощь по этому вопросу будет принята с благодарностью.

1 Ответ

0 голосов
/ 05 марта 2020

Проблема возникла из-за того, что URL и WSDL были для верхнего сайта SharePoint, а не для указанного c подсайта.

После того, как мы предоставили URL-адрес / wsdl подузла, запустилось внешнее приложение. работает правильно

Ошибка "The List That is Referenced Here no Longer Exists" возникает при попытке ссылки на неправильный дочерний сайт при создании веб-ссылки на веб-сервис Lists.asmx.

"Если URL вашего сайта http://my_share_point_site, the list.asmx can be found at http://my_share_point_site/sites/main/_vti_bin/lists.asmx?WSDL и используйте этот URL для ссылки на API, и некоторые вещи могут работать.

Когда мы пытаемся обновить список, найденный в некотором подсайте, ваши обновления будут молча завершаться неудачей. Вы должны ссылаться на http://my_share_point_site/sites/main/sub_site/_vti_bin/lists.asmx?WSDL для обновлений в ваш список. "

Вот сообщение в блоге об этой проблеме: SharePoint: список, на который есть ссылки, здесь больше не существует

Вот тема о списках вызовов .asmx в SharePoint Online, который мы также нашли полезным: Как вызвать (_vti_bin) SOAP веб-сервис в SharePoint Online 2013 из точки net веб-приложение

Кроме того, за пределами S harePoint Online, предлагается использовать CSOM SharePoint Online вместо Lists.asmx, Lists.asmx - это старый способ, в основном для SharePoint 2010:

Как читать различные объекты с помощью объектной модели на стороне клиента SharePoint Online ( CSOM)

Выполнение базовых c операций с использованием кода клиентской библиотеки SharePoint

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...