2014-05-06 3 views
0

Je tente de créer un service mobile dans Azure (C#) qui envoie des données vers des applications client. Les données que je dois extraire proviennent d'un site SharePoint auquel je ne suis pas très familier et auquel je n'ai pas accès.Extraction de données d'une liste dans SharePoint 2013 via REST

J'ai lu quelques ressources en ligne, mais chaque fois que j'essaie de visiter rapidement la liste via _api/web/listes/ ou _api/web/listes/getbytitle ('pages'), je reçois un invite d'authentification

Est-ce le comportement par défaut ou hsa le reste a été éteint? Dois-je créer une application sharepoint pour générer un jeton oauth, puis accéder à la liste? Je suis fondamentalement désemparé, donc toute information serait grandement appréciée.

Répondre

0
+0

J'ai vaguement mentionné ceux en gras ci-dessus. Je suppose que je demandais si l'authentification est requise par défaut ou non, étant donné que tout ce que je fais est une opération GET. De tout le code, je suppose qu'un jeton oauth est toujours requis et devine ma question suivante conduit à générer ce jeton dans une application hébergée en dehors de sharepoint. – AnimaSola

+0

Oui, vous devez être authentifié. Le modèle de revendications est un peu plus compliqué que l'authentification SharePoint sur site. Consultez cet exemple pour demander des informations de connexion: http://code.msdn.microsoft.com/office/SharePoint-Online-0bdeb2ca/view/Discussions –

0

utiliser les URL suivantes:

  • Obtenez toutes les listeshttp://servername/_api/web1/web2/lists/
  • Obtenir la liste par titrehttp://servername/_api/web1/web2/lists/GetByTitle('myList')
  • Obtenir tous les éléments spécifiques liste http://servername/_api/web1/web2/lists/GetByTitle('myList')/items
  • liste point par point IDhttp://servername/_api/web1/web2/lists/GetByTitle('myList')/items/GetItemById(4)
  • articles de retour avec des champs spécifiqueshttp://servername/_api/web1/web2/lists/GetByTitle('myList')/items?$select=Title,Age

Pour plus de détails, s'il vous plaît visitez le lien http://wmostafaw.wordpress.com/2012/11/17/odata-in-sharepoint-2013-lists-and-items/

1

C'est le comportement par défaut ior. Vous aurez besoin d'informations d'identification pour accéder aux services REST et vous avez créé un nouveau Digest pour ce faire par programme:

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; 

Si vous avez un compte qui peut accéder à la liste dans SharePoint, alors vous devriez être en mesure d'utiliser ce même compte authentifier contre le service REST et récupérer les éléments de la liste une fois que vous le passez le Digest. Si vous en avez un, j'ai beaucoup d'exemples de code sur mon blog pour ce type d'application.

Questions connexes