Я пытаюсь получить доступ к веб-сервису Sharepoint 2007, хотя HTTP-вызовы iOS. Протокол связи - SOAP (1 и 1.2). Я могу успешно выполнить GetList и GetListAndView. Однако, когда я пытаюсь GetListItems, я получаю любое количество сообщений об ошибках, ни один из которых не имеет никакого смысла.Ошибки веб-сервиса SharePoint 2007
Формат SOAP вызова (1.2 в этом случае, но та же самая проблема существует для 1.0) для GetListItems заключается в следующем:
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>TaskListSample2-0</listName>
<viewName>{13C5392C-7DBC-4803-A3B8-B377D8566A55}</viewName>
<query><Query><Where><Or><Eq><FieldRef Name="Title"></FieldRef><Value Type="Text">Test</Value></Eq><IsNotNull><FieldRef Name="Title"></FieldRef></IsNotNull></Or></Where></Query></query>
<viewFields><ViewFields><FieldRef Name="Title" /><FieldRef Name="Status" /></ViewFields></viewFields>
<rowLimit>100</rowLimit>
<queryOptions></queryOptions>
<webID>c069106a-8d18-43d6-81c2-2687f568a3c5</webID>
</GetListItems>
</soap12:Body>
</soap12:Envelope>
Структура содержания между <Query>...</Query>
точно так же, как и отформатированный в успешном .Net вызове этой функции.
я получаю следующее сообщение об ошибке: назад
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault>
<soap:Code>
<soap:Value>soap:Receiver</soap:Value>
</soap:Code>
<soap:Reason>
<soap:Text xml:lang="en">Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.</soap:Text>
</soap:Reason>
<detail>
<errorstring xmlns="http://schemas.microsoft.com/sharepoint/soap/">Root element is missing.</errorstring>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
я провел дней на это, наряду с несколькими другими программистами, которые разбираются в .Net и Sharepoint. В зависимости от различных изменений редактирования запроса мы также видели, что «элемент <Query>
в запросе отсутствует или недействителен».
Я также, кстати, попытался выполнить все эти SOAP-вызовы через Fiddler2 в окне Windows. Я вижу те же самые точные результаты, что и с вызовами iOS HTTP.
Ближайший ответ, который я смог получить, заключается в том, что запрос отформатирован неправильно (duh). Но для моей жизни правильный формат ускользает от нас. Нам удалось успешно запросить сервер из собственного приложения .Net, но копирование точного содержимого и формата XML запроса в код iOS ничего не меняет.
Излишне говорить, что документация и сообщения об ошибках Microsoft являются уголовно бесполезными. И нет, мы не можем перейти на MOSS 2010. Клиент не будет обновляться в ближайшее время, поэтому нам нужно работать с технологией, которую они имеют.
Любая помощь вообще будет невероятно оценена. Даже если кто-то может окончательно продемонстрировать, что эта функция веб-сервиса нарушена в 2007 году. Хотя это будет сосать, по крайней мере, мы бы знали, что мы не совсем глупы. Но если кто-то может определить, что я на самом деле неправильно форматирую запрос и показываю, как его исправить, это было бы потрясающе.
Спасибо.