对于您关于 WSDL 不同的第一个问题:它确实应该是等效的并且包含所有类型!每当您将 /_vti_bin/UserGroup.asmx?wsdl 附加到您网站的 URL 时,SharePoint 肯定会显示完整的 WSDL,包括复杂的类型定义等。我现在刚刚针对我自己的 SharePoint 实例进行了尝试,并且从 http:/ 返回的 WSDL /mysite.com/ ...snip... /pierre/_vti_bin/UserGroup.asmx?wsdl 的大小与http://msdn.microsoft.com/en-us/library/dd965659%中的几乎相同28v=office.12%29.aspx并快速检查以确保两个地方都存在复杂类型,这证实了这一点。
回答您的第二个问题:我认为您不应该根据文档中的 WSDL 创建您的 Web 服务存根和框架。而是使用从您的站点返回的 WSDL。如果您没有获得从 SharePoint 返回的 WSDL 中的所有复杂类型,则应首先解决该问题。
我会尝试的第一件事:下载 SOAPui(免费)并简单地插入以 ?wsdl 结尾的 URL 并创建示例请求。也许您会遇到访问问题(UAG 或其他),但至少您会知道 WSDL 格式正确。如果 SOAPui 可以基于 WSDL 生成客户端代码,那么您也可以(使用 wsdl2java 或 wsdl2dotnet 等价物;我不记得 .net 版本的名称)。
是的,从文档中复制 WSDL 很危险,但我更担心某些内容会被缩写或文档过时等。
至于合同变更,我从 2009 年开始使用 UserGroup.asmx?wsdl 端点,它仍然适用于较新版本的 SharePoint(即使在升级到 SP2010 之后)。我使用 java 作为客户端代码。Microsoft 确实在 SharePoint 中确定了 Web 服务,集成我们的 Java 堆栈并调用/从 SharePoint Web 服务调用非常容易。它还可以与我们用来测试 Web 服务的其他工具(如 SOAPui 等)进行很好的互操作。