我正在尝试在Azure(C#)中构建一个将数据推送到客户端应用程序的移动服务。我需要提取的数据来自一个我不熟悉但也无法访问的sharepoint站点。
我在线阅读了一些资源,但每当我尝试通过 _api / web / lists / 或 _api / web / lists / getbytitle('pages')快速访问该列表时),我收到身份验证提示。
这是默认行为还是其他api已关闭?我是否需要构建一个sharepoint应用程序来生成oauth令牌然后访问列表?
我基本上一无所知,所以任何信息都会受到高度赞赏。
答案 0 :(得分:1)
使用以下网址:
http://servername/_api/web1/web2/lists/
http://servername/_api/web1/web2/lists/GetByTitle('myList')
http://servername/_api/web1/web2/lists/GetByTitle('myList')/items
http://servername/_api/web1/web2/lists/GetByTitle('myList')/items/GetItemById(4)
http://servername/_api/web1/web2/lists/GetByTitle('myList')/items?$select=Title,Age
有关详细信息,请访问链接http://wmostafaw.wordpress.com/2012/11/17/odata-in-sharepoint-2013-lists-and-items/
答案 1 :(得分:1)
这是默认行为。您将需要凭据来访问REST服务,并且您已创建摘要以便以编程方式执行此操作:
String retVal = "";
try
{
string url = "https://YourSite.com/";
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");
}
}
catch
{ }
return retVal;
如果您的帐户可以访问SharePoint中的列表,那么您应该能够使用同一帐户对REST服务进行身份验证,并在将摘要传递给摘要后检索列表项。如果你得到一个我在我的博客上有很多代码示例用于这种类型的应用程序。
答案 2 :(得分:0)