Arhive de categorii: SharePoint Web Services

Cum pentru a specifica oamenilor ca un domeniu de căutare / Sursă de conţinut utilizând SharePoint 2013 RESTUL API

Am avut un motiv pentru a lucra cu SharePoint 2013 API de căutare prin intermediul restul pentru prima dată. Am vrut pentru a căuta oameni, nu documente. Cheia aici este că de învăţare specificate sursele de conținut prin intermediul GUID sale (sau cel puţin în acest caz). JQuery următorul fragment Arată cum:

    loadExpertsAsync: funcţia() {

        jQuery.support.cors = adevărat;

        $.Ajax({
            URL-ul: Acest lucru.CreateFullApiUrl() +
                "?querytext = "portaluri"&IDSursă = "b09a7990-05ea-4af9-81ef-edfab16c4e31"" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Abilităţi,AboutMe,Interesele,Funcţie,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&RowLimit = 99",
            metoda: "OBŢINE",
            anteturi: { "Accepta": "cerere/json; Odata = verbose" },
            cache-ul: fals,
            succesul: funcţia (rezultatul) {

În cazul meu, I sînt running API împotriva SharePoint online. Pentru a obţine GUID-ul, Am urmat pasii:

  1. Accesaţi centrul de administrare SharePoint
  2. Selectează "căutare" din stânga mâna de navigare
  3. Selectaţi "gestionare rezultatul surse"
  4. Selectaţi "Localnicii rezultate"
  5. Uita-te la URL-ul.

URL-ul meu arata ceva de genul:

https://xyzzy-admin.sharepoint.com/_layouts/15/searchadmin/EditResultSource.aspx?level=tenant&sourceid=b09a7990%2D05ea%2D4af9%2D81ef%2Dedfab16c4e31&view=1

Parametrul IDSursă este ceea ce a lucrat pentru mine.

(Am înţeles că IDSursă poate fi de fapt un fel de lucru permanente cu SP, but I’ll always check anyway 🙂 ).

</scop>

undefinedAboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin

Lists.asmx, GetListItems and Folders

Am făcut unele de cercetare pentru cineva astăzi în jurul web list.asmx serviciului furnizat ca parte din SharePoint 2010 (şi mai devreme).  Ea a fost în măsură pentru a obţine elementele de listă la folderul rădăcină (inclusiv numele subfolderelor), dar nu a putut obţine elemente în sub-pliant.  Am făcut unele privire around pe Internet şi este o chestiune de surprinzător de comune.  Încă, Nu am putut ajunge un răspuns bun la întrebarea simplă, "dacă ştiu folderul, cum a face I a lua elementele în folderul?”  Pentru a fi sincer, Nu încerc toate că greu deoarece mi-am dorit pentru a figura acest una pe propria mea pentru un timp Zâmbet.

Pentru a parametriza acest lucru, Am creat un site numit "Blogging-ul scenarii" şi o listă particularizată numit "Lista cu Sub foldere personalizate".  Apoi am creat foldere numit:

  • An 2005
  • An 2006
  • An 2007

Am adăugat câteva elemente în folderul "Anul 2006".  Aceasta este ceea ce pare ca:

image

Prietenul meu nu este scris în C# cod, dar mai degrabă folosire Java, Deci plicul SĂPUN a fost ceea ce ea într-adevăr nevoie.  Pentru a obţine că, Am scris un pic jQuery şi apoi folosite Scripcarul pentru a obţine conversaţie reale HTTP.

Aici este jQuery relevante (Am copiat codul în jos mai jos dacă doriţi să copiaţi/lipiţi):

image

Au prima cheie este de a include atât un <queryOptions> şi <QueryOptions> nod.  A doua cheie este că <Folder> nodul este un URL la care clientul are acces.

Pot exista alte modalităţi de a obţine acest lucru, dar aceasta a lucrat bine pentru mine când folosind jQuery.

Aici este plicul SĂPUN pentru cele de mai sus:

<soapenv:Plic xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/envelope/’>                
  <soapenv:Organism>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Lista particularizată cu subdosarele</listName>
      <viewFields>  
        <ViewFields>
          <Numele FieldRef =' titlu’ />
          <Numele FieldRef ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Folder>
http://demoserver1/blogging-ul Scenarii/liste/particularizat lista cu Sub foldere/anul 2006</Folder>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Organism>
</soapenv:Plic>

O mulţime de exemple şi discuţii în jurul acest lucru a condus-mi să cred că tot ce am nevoie a fost <QueryOptions> şi specificaţi un nume de folder.  Pentru mine, I nevoie atât wrap-o în interiorul <queryOptions> precum şi specificaţi un URL-ul complet pentru <Folder> nod.

Iată de configurare de AJAX jQuery:

$(document).gata(funcţia() {
       var soapEnv =
           "<soapenv:Plic xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/envelope/’> \
               <soapenv:Organism> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Lista particularizată cu subdosarele</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <Numele FieldRef =' titlu’ /> \
                              <Numele FieldRef ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Folder>http://demoserver1/Blogging Scenarii/liste/particularizat lista cu Sub foldere/anul 2006</Folder> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Organism> \
           </soapenv:Plic>";

</scop>

Aboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin

Lists.asmx, GetList şi "valoare nu poate fi nul”

Am descoperit astăzi că GetList() metoda în lists.asmx serviciu Web trebuie să fie numit foarte atent sau este predispus să arunce un misterios "Valoare nu poate fi null" excepţie (şi care este presupunând că puteţi obţine trecut chiar mai rău mesajul generic de eroare, "Excepţie de tip" Microsoft.SharePoint.SoapServer.SoapServerException’ a fost aruncat.")  În mod specific, Am constatat că nu pot oferi nici un fel de prefix pe metoda GetList.  Următorul fragment jQuery ilustrează punctul:

image

Dacă faci asta, serviciul web răspunde cu "Valoare nu poate fi null" ca pe acest lautar-furnizate HTTP transcriere:

<?XML version = "1.0" codificare = "utf-8"?>
  <săpun:Plic
     xmlns:săpun ="
http://schemas.xmlsoap.org/SOAP/envelope/"    
     xmlns:XSi = "
http://www.w3.org/ 2001/XMLSchema-exemplu
     xmlns:XSD ="
http://www.w3.org/ 2001/XMLSchema">

  <săpun:Organism>
    <săpun:Vina>
      <faultCode>săpun:Server</faultCode>
      <faultString>
        Excepţie de tip "Microsoft.SharePoint.SoapServer.SoapServerException’ a fost aruncat.
      </faultString>
      <detaliu>
        <errorstring xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Valoarea nu poate fi nul.
        </errorstring>
      </detaliu>
    </săpun:Vina>
  </săpun:Organism>
</săpun:Plic>

desigur, tu, probabil, nu ar adăuga că prefixul "s0" pe cont propriu, dar unele instrumente sunt predispuse să facă acest lucru (ca Eclipse).

Acest lucru este tot mai confuz / frustrant deoarece alte metode tolera prefixe.  De exemplu, The GetListCollection metoda nu minte dacă acesta este fost prefixate, chiar şi cu prostii prefixele ca "xyzzy":

image

Aceasta "valoare nu poate fi null" pare destul de comune cu lists.asmx deci sperăm că acest lucru va ajuta pe cineva afară în viitor.

</scop>

Aboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin