我正在尝试从桌面应用程序(跨平台,跨操作系统)使用SharePoint 2013 REST服务。应用程序基本上是应用程序视图中的 HTML 页面。有没有一种简单的方法可以使用HTTP方法对我的调用进行身份验证?
是的,您可以通过 REST 调用进行身份验证并接收摘要。
string url = "http://Your.SP.Site";
HttpClient client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true });
client.BaseAddress = new System.Uri(url);
string cmd = "_api/contextinfo";
client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
client.DefaultRequestHeaders.Add("ContentType", "application/json");
client.DefaultRequestHeaders.Add("ContentLength", "0");
StringContent httpContent = new StringContent("");
var response = client.PostAsync(cmd, httpContent).Result;
if (response.IsSuccessStatusCode)
{
string content = response.Content.ReadAsStringAsync().Result;
JsonObject val = JsonValue.Parse(content).GetObject();
JsonObject d = val.GetNamedObject("d");
JsonObject wi = d.GetNamedObject("GetContextWebInformation");
retVal = wi.GetNamedString("FormDigestValue");
}
上面的示例演示如何使用 HttpClient 在 C# 中检索摘要。 此字符串需要作为标头传递给您为进行身份验证而进行的所有其他 rest 调用。 如果需要,您可以通过传入用户名和密码来创建凭据。
我在这里有更多例子:
https://arcandotnet.wordpress.com/2015/04/01/sharepoint-2013-rest-services-using-c-and-the-httpclient-for-windows-store-apps/
你也可以在 JavaScript 中进行这些调用,Microsoft有很多关于此的文档。 还有 .NET 库 Microsoft.SharePoint.Client.DLL (CSOM) 可以简化这种类型的编码,但您必须在客户端上安装该库。