我正在尝试通过我正在编写的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=""https://dbp.btfinancialgroup.com/Shared
Documents/Papers/TestingFile.txt""
在所有这些方案中,请求结束时目标中不存在该文件。
我真的被困了,因为大多数在线建议都是为了解决C#问题,这些问题使用.net协议连接到SharePoint。
有什么建议吗?
由于
答案 0 :(得分:1)
协助可能遇到此问题的其他人。
事实证明,我的代码完全没有问题,我建立了一个C#项目来尝试使用它为SharePoint提供的更好的连接,并且还与Microsoft支持中确认我的代码的人交谈工作
最后,服务器上的映射不正确,这意味着Web服务从未正确链接到URL。这导致“对象引用未设置为对象的实例”错误。
对于收到此错误消息的任何其他人,可能不仅仅是您传递给Web服务的值存在问题 - 还要检查服务器上设置的映射。显然,ULS日志可以帮助解决这个问题,微软支持人员提到了缩小导致它的原因。