SharePoint CopyIntoItems Objective C中的SOAP消息

时间:2011-11-02 05:52:54

标签: objective-c web-services sharepoint http soap

我正在尝试通过我正在编写的Mac应用程序以编程方式将文件上传到SharePoint。我可以使用GetListItems webservice来检索文件列表,并且所有身份验证等都能正常工作。我自己形成SOAP消息如下:

起初我以为我的目标C方面写得不正确,但我一直在使用Firefox的HTTP请求扩展,“海报”,但仍无法使其工作。

我构建的Poster中的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>http://null</SourceUrl>
      <DestinationUrls>
        <string>myurl.com/Shared Documents/Documents/TestingFile.txt</string>
      </DestinationUrls>
      <Stream>VGVzdGluZyB0ZXN0aW5n</Stream>
    </CopyIntoItems>
  </soap:Body>
</soap:Envelope>

流(目前)只是一些数据,看看我是否可以让它工作。我读到将SourceUrl设置为http://null,在某些情况下可以提供帮助。我还读到DestinationURL需要是完整路径。这里的问题是:

1)如果我把URL放在没有https://的情况下,那么我得到的回复是:

<?xml version="1.0" encoding="utf-8"?><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><CopyIntoItemsResponse 
xmlns="http://schemas.microsoft.com/sharepoint/soap/">    
<CopyIntoItemsResult>0</CopyIntoItemsResult><Results><CopyResult ErrorCode="Success" 
DestinationUrl="myurl.com/Shared Documents/Documents/TestingFile.txt" /></Results>
</CopyIntoItemsResponse></soap:Body></soap:Envelope>

2)如果我把完整的路径,例如

https://myurl.com/Shared Documents/Documents/TestingFile.txt

然后结果告诉我和以前一样,除了这一点:

<CopyResult ErrorCode="Unknown" ErrorMessage="Object reference not set to an instance of an     
object."     
DestinationUrl="https://dbp.btfinancialgroup.com/Shared%20Documents/Papers/TestingFile.txt" 
/>

3)如果我把完整的路径用引号括起来,例如

“https://myurl.com/Shared Documents / Documents / TestingFile.txt”

然后结果告诉我与第一个相同,例如这是成功的,但有  这个目的地的URL:

DestinationUrl="&quot;https://dbp.btfinancialgroup.com/Shared 
Documents/Papers/TestingFile.txt&quot;"

在所有这些方案中,请求结束时目标中不存在该文件。

我真的被困了,因为大多数在线建议都是为了解决C#问题,这些问题使用.net协议连接到SharePoint。

有什么建议吗?

由于

1 个答案:

答案 0 :(得分:1)

协助可能遇到此问题的其他人。

事实证明,我的代码完全没有问题,我建立了一个C#项目来尝试使用它为SharePoint提供的更好的连接,并且还与Microsoft支持中确认我的代码的人交谈工作

最后,服务器上的映射不正确,这意味着Web服务从未正确链接到URL。这导致“对象引用未设置为对象的实例”错误。

对于收到此错误消息的任何其他人,可能不仅仅是您传递给Web服务的值存在问题 - 还要检查服务器上设置的映射。显然,ULS日志可以帮助解决这个问题,微软支持人员提到了缩小导致它的原因。