【问题标题】:Get list of sites in SharePoint available to user获取 SharePoint 中可供用户使用的网站列表
【发布时间】:2012-04-19 11:31:25
【问题描述】:

我一直在尝试使用 sharepoint Web 服务(来自 webs.asmx)GetWebCollection 来获取用户可用的站点列表。我已经使用 sharepoint 成功进行了身份验证,如果我在站点路径中进行硬编码,我可以取回文件。但是,当我尝试使用 GetWebCollection 时出现“403 Forbidden”错误?

需要什么不同的方法?

或者,有什么方法可以告诉用户自动分配到哪个站点?

我在 Objective-C 中通过 SOAP(使用 ASIHTTPRequest)进行连接。

- (void)getUrl {

NSURL *url = [NSURL URLWithString:@"https://[server]/_vti_bin/Webs.asmx"];

requestGetSites = [ASIHTTPRequest requestWithURL:url];
[requestGetSites setDelegate:self];

NSString *soapMessage = @"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
                         "<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/\">\n"
                         "<soap:Body>\n"
                         "<GetWebCollection xmlns=\"http://schemas.microsoft.com/sharepoint/soap\" />\n"
                         "</soap:Body>\n"
                         "</soap:Envelope>";

[requestGetSites setUseCookiePersistence:NO];
[requestGetSites setUsername:@"username"];
[requestGetSites setPassword:@"password"];
[requestGetSites appendPostData:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
[requestGetSites addRequestHeader:@"Content-Type" value:@"text/xml; charset=utf-8"];
[requestGetSites addRequestHeader:@"Host" value:@"[a server]"];
[requestGetSites addRequestHeader:@"SOAPAction" value:@"http://schemas.microsoft.com/sharepoint/soap/GetWebCollection"];

NSLog(@"Request headers are: %@", [[requestGetSites requestHeaders] description]);

[requestGetSites startSynchronous];

}

【问题讨论】:

  • 您是否尝试过执行 POST 请求?
  • @woody993 是否有可能在不手动构造 SOAP 消息(wsdl2obj 存根)的情况下使用 ASIHTTPRequest?
  • @surlac 我上一次使用 wsdl2obj 是一年多以前,从那以后我写了一个封闭源代码库,它使用 libxml 构造 XML 有效负载,所有请求都是使用 NSURLConnection 和操作队列发出的,响应是使用 libxml 解析为模型对象。然后我扩展了该库以构建特定于 SharePoint 的 SOAP 方法和有效负载。根据 SharePoint/SOAP 的数量,如果您不打算使用每种 WSDL 方法,那么这样做也可能是您的最佳选择。所以在回答你的问题时,我不完全确定
  • @woody993 谢谢。看看你的图书馆会很棒,但听起来不可能分享。现在我正在尝试使用 sudzc.com 为请求生成存根(它看起来更干净),但它不会生成将结果放入的模型。因此,我正在考虑将每个响应保存在 XML 中,并从生成的 XML 中生成模型。这是正确的做法吗?
  • @surlac 我确实有计划在未来开源它,并且会尽量记住在我这样做时让你知道,但可能要几个月后才会知道。关于模型,我就是这样做的,我阅读 XML 并从中创建模型对象

标签: sharepoint soap


【解决方案1】:

我已经开源了一个用于连接 SharePoint 的 SharePoint 库,网址为 http://github.com/woodnathan/SPConnector

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-15
    • 2022-01-02
    • 2021-12-26
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多