0

我正在开发一个移动共享点应用程序。我在尝试检索子站点的列表集合时遇到问题。浏览了这么多博客并尝试了不同的方法,但没有用。

我的主站点有两个子站点(SampleSubsite 和 SampleSubsite2),我在其中创建了文档库。

/_vti_bin/SiteData.asmx 中定义的 GetSite Web 服务返回以下响应。

网址 = " http://sp2010.lab.xyz.local:20852 ";

网址 = " http://sp2010.lab.xyz.local:20852/SampleSubsite ";

网址 = " http://sp2010.lab.xyz.local:20852/SampleSubSite2 ";

现在,当我尝试获取子站点的列表集合(在本例中为 SampleSubsite)时,我正在按如下方式构建 URL。

http://sp2010.lab.xyz.local:20852/SampleSubsite/_vti_bin/Lists.asmx

我尝试了多种选择,但没有用。(测试是根站点名称)。在以下所有 3 种情况下,我都获得了根集合本身。

http://sp2010.lab.xyz.local:20852/Sites/SampleSubsite/_vti_bin/Lists.asmx

http://sp2010.lab.xyz.local:20852/Sites/Test/SampleSubsite/_vti_bin/Lists.asmx

http://sp2010.lab.xyz.local:20852/Test/SampleSubSite/_vti_bin/Lists.asmx

任何人都可以通过一些了解它。

代码片段如下:

#define kFetchListCollectionXML @"<?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>"\
@"<GetListCollection xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\" />"\
@"</soap:Body>"\
@"</soap:Envelope>"\


- (void)getListCollectionOfSite:(NSString *)sitePath {
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@/_vti_bin/Lists.asmx",sitePath]];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"http://schemas.microsoft.com/sharepoint/soap/GetListCollection" forHTTPHeaderField:@"SOAPAction"];
    [request setValue:[NSString stringWithFormat:@"%ld",(unsigned long)kFetchListCollectionXML.length] forHTTPHeaderField:@"Content-Length"];

    [request setHTTPBody:[kFetchListCollectionXML dataUsingEncoding:NSUTF8StringEncoding]];
    [self performConnectionWithRequest:request];
}
4

2 回答 2

0

在创建备用访问映射并为子站点创建请求后,该问题运行良好,如下所示:

对于 URL 为“ http://sp2010.lab.xyz.local:20852/SampleSubsite ”的子站点“SampleSubsite”,请求 URL 应构造如下。

http://sp2010.lab.xyz.local:20852/SampleSubsite/_vti_bin/Lists.asmx

于 2014-01-13T09:23:13.887 回答
0

我正在使用 New-WebServiceProxy cmdlet 来解决这个问题。当我添加?WSDL到查询字符串的末尾时,问题就消失了,如此处建议的http://blogs.msdn.com/b/powershell/archive/2010/06/24/using-new-webserviceproxy-to-get-修改并添加项目到列表中的共享点 2007.aspx

于 2015-04-08T12:13:44.310 回答