我正嘗試將文檔上傳到iOS的Sharepoint文檔庫,並且成功有限。使用低級Web服務將文檔上傳到Sharepoint庫
我已經使用Copy.CopyIntoItems至少讓我的文檔出現在目標文檔庫,使用這個SOAP請求:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<CopyIntoItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<SourceUrl>[server url]</SourceUrl>
<DestinationUrls><string>[server url]</string></DestinationUrls>
<Fields></Fields>
<Stream>[base 64 encoded string]</Stream>
</CopyIntoItems>
</soap:Body>
</soap:Envelope>
這讓我至少有我的文檔出現在我的圖書館。但是,響應沒有給我任何有關它們的元數據(比如GUID等),這使得我很難管理。此外,在瀏覽器中查看項目時,我還有其他操作選項,例如「查看源項目」,以及在刪除額外提示時指出「此項目已從其他位置複製...」。由於它主要是使用SharePoint的Bob,這隻會使它們感到困惑。理想情況下,文檔的操作看起來與直接通過瀏覽器中的文檔庫上傳時相同。透明度越高越好。
我在網上看到的其他常見解決方案是使用Lists.UpdateListItems和Lists.AddAttachment的組合。我已經得到Lists.UpdateListItems正常工作並創建一個新條目(這很好,因爲它使我的元數據像GUID一樣,至少乍一看出現與表單上傳文檔相同)。但是,Lists.AddAttachment不適用於我。使用此SOAP請求的AddAttachment(GUID是新添加的項目的GUID與UpdateListItems):
<?xml version="1.0" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<AddAttachment xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>Test</listName>
<listItemID>{1F214D95-B92B-4E10-8B96-4B04DC6DA9B6}</listItemID>
<fileName>screenshot.png</fileName>
<attachment>[base 64 string]</attachment>
</AddAttachment>
</soap:Body>
</soap:Envelope>
我得到如下回應:
<?xml version="1.0" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<soap:Fault>
<faultcode>
soap:Server
</faultcode>
<faultstring>
Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.
</faultstring>
<detail>
<errorstring xmlns="http://schemas.microsoft.com/sharepoint/soap/">
Input string was not in a correct format.
</errorstring>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
任何想法?我確信我會在某個地方走錯路,我只是不確定在哪裏。謝謝!
下一次嘗試,對於listItemId,而不是使用來自updateListItems(這是一個GUID)的ows_UniqueId,我將它設置爲使用ows_ID(這只是一個簡單的數字,在本例中爲44)。這一次,我的迴應是看似更常見的「價值不在預期範圍內」。 Soooo ...仍然沒有工作,但我認爲這更接近? – cscott530 2012-04-09 17:35:36