iOS HTTP 呼び出しを使用して、Sharepoint 2007 Web サービスにアクセスしようとしています。通信プロトコルは SOAP (1 および 1.2) です。GetList と GetListAndView を正常に実行できました。しかし、GetListItems を試してみると、意味をなさないエラー メッセージがいくつも表示されます。
GetListItems の SOAP 呼び出し (この場合は 1.2 ですが、1.0 にも同じ問題があります) の形式は次のとおりです。
<?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>
クエリ内の要素が欠落しているか無効である」ことも確認されています。
ちなみに、私は Windows ボックスで Fiddler2 を介してこれらすべての SOAP 呼び出しを試みました。iOS HTTP 呼び出しとまったく同じ結果が表示されます。
私が得ることができた最も近い答えは、クエリが正しくフォーマットされていないということです (duh)。しかし、私の人生では、正しいフォーマットを見つけることができません。ネイティブ .Net アプリからサーバーに正常にクエリを実行できましたが、クエリ XML の正確なコンテンツと形式を iOS コードにコピーしても何も変わりません。
言うまでもなく、Microsoft のドキュメントとエラー メッセージは犯罪的に役に立ちません。いいえ、MOSS 2010 に移行することはできません。クライアントはすぐに更新されないため、クライアントが導入しているテクノロジを使用して作業する必要があります。
どんな助けでも信じられないほど高く評価されます。その特定の Web サービス機能が 2007 年には壊れていることを誰かが明確に証明できたとしても。しかし、誰かが私が実際にクエリを間違ってフォーマットしていることを特定し、それを修正する方法を教えてくれたら、それは素晴らしいことです.
ありがとう。