Archívy kategórie: SharePoint webových služieb

Ako zadať ľudí ako rozsah hľadania / Zdroj obsahu služby SharePoint 2013 REST API

Ja som nemal dôvod na prácu so službou SharePoint 2013 Rozhranie API vyhľadávania cez ZVYŠOK po prvýkrát. Chcel, aby vyhľadať ľudí, nie dokumentov. Kľúč učenia tu je to, že zadáte obsah zdrojov cez jeho GUID (alebo aspoň v tomto prípade). Nasledujúcich jQuery úryvok ukazuje ako:

    loadExpertsAsync: Funkcia() {

        jQuery.support.cors = pravda;

        $.AJAX({
            adresa URL: this.CreateFullApiUrl() +
                "?querytext = "portály"&sourceid = "b09a7990-05ea-4af9-81ef-edfab16c4e31"" +
                "&selectproperties = "LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Zručnosti,About,Záujmy,Funkcia,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl "" +
                "&RowLimit = 99",
            metóda: "ZÍSKAŤ",
            hlavičky: { "Prijať": "Aplikácia/json; Odata = podrobného" },
            Vyrovnávacia pamäť: FALSE,
            úspech: Funkcia (výsledok) {

V mojom prípade, Som beží API proti SharePoint online. Získať identifikátor GUID, Sledoval som tieto kroky:

  1. Prístup k službe SharePoint admin center
  2. Vyberte "Hľadať" z ľavej navigáciu
  3. Vyberte "Spravovať zdroje výsledok"
  4. Vyberte "Miestni ľudia výsledky"
  5. Pozrite sa na URL.

Moja adresa URL hľadal niečo podobné:

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

Sourceid parameter je to, čo pracoval pre mňa.

(Chápem, že Identifikácia zdroja môže byť v skutočnosti druh trvalé vec s SP, but I’ll always check anyway 🙂 ).

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin

Lists.asmx, GetListItems a priečinkov

Bol som robiť nejaké výskum pre niekoho dnes okolo list.asmx webovej služby poskytované ako súčasť SharePoint 2010 (a staršie).  Ona sa podarilo získať zoznam položiek v hlavnom priečinku (vrátane názvov podpriečinkov), ale nemohol dostať položky v podpriečinkov.  Som urobil niektoré pozrieme na internetové a je prekvapivo spoločná otázka.  Ešte, Nemohol som sa dostať dobrú odpoveď na jednoduchú otázku, „pokiaľ viem, aby sa priečinok, ako sa dostať položky v priečinku?”  Ak chcete byť úprimný, Aj vyskúšať tvrdo všetko, pretože som chcel obrázok, tohle sa sám na chvíľu úsmev.

Nastavenie, Som vytvoril stránky s názvom "Blogovanie scenáre" a vlastný zoznam s názvom "Vlastný zoznam s Sub Folders".  Potom som vytvoril priečinky s názvom:

  • Rok 2005
  • Rok 2006
  • Rok 2007

Som pridal niekoľko položiek do priečinka „rok 2006".  To je to, čo vyzerá ako:

image

Môj priateľ nie je písania kódu C#, ale skôr pomocou Java, Obálka SOAP tak bol, čo ona naozaj potrebné.  Tú, Som napísal bitovým jQuery a potom použiť fiddler získať skutočný rozhovor HTTP.

Tu je relevantné jQuery (I skopíroval kód nadol pod Ak chcete kopírovať/vložiť):

image

Ich prvý kľúč je zahrnúť aj <queryOptions> a <QueryOptions> uzol.  Druhý kľúč je, že <Priečinok> uzol je URL, na ktorú má klient prístup.

Môžu existovať iné spôsoby, ako si to, ale to funguje dobre pre mňa, keď pomocou jQuery.

Tu je Obálka SOAP pre vyššie uvedené:

<soapenv:Obálka xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Orgán>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listnate>Vlastný zoznam s priečinkami Sub</listnate>
      <viewFields>  
        <ViewFields>
          <Názov FieldRef = "hlava’ />
          <Názov FieldRef = "EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Priečinok>
http://demoserver1/blogovanie Scenáre, zoznamy alebo vlastné zoznam s Sub Folders za rok 2006</Priečinok>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Orgán>
</soapenv:Obálka>

Veľa príkladov a diskusie okolo to viedol ma domnievať sa, že všetko, čo potrebujete bol <QueryOptions> a zadajte názov priečinka.  Pre mňa, I potrebné pre obe zabaliť vnútri <queryOptions> rovnako ako zadajte úplnú adresu URL <Priečinok> uzol.

Tu je nastavenie AJAX jQuery:

$(dokument).pripravený(Funkcia() {
       var soapEnv =
           "<soapenv:Obálka xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Orgán> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listnate>Vlastný zoznam s priečinkami Sub</listnate> \
                       <viewFields> \
                           <ViewFields> \
                              <Názov FieldRef = "hlava’ /> \
                              <Názov FieldRef = "EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Priečinok>http://demoserver1/Blogging Scenáre, zoznamy alebo vlastné zoznam s Sub Folders za rok 2006</Priečinok> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Orgán> \
           </soapenv:Obálka>";

</koniec>

Vyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin

Lists.asmx, GetList a "hodnota nesmie byť null”

Dnes som zistil, že GetList() metóda lists.asmx Webová služba má byť nazývaný veľmi starostlivo alebo je náchylný k hodiť tajomný "Hodnota nesmie byť null" výnimka (a to je predpokladom, môžete získať minulosti ešte horšie generické chybové hlásenie, "Výnimka typu" Microsoft.SharePoint.SoapServer.SoapServerException’ bol hozen.")  Osobitne, Zistil som, že nemôže poskytnúť akýkoľvek druh predponu na metódu GetList.  Nasledujúci úryvok jQuery ilustruje bod:

image

Ak to urobíte, Webová služba odpovedá s "Hodnota nesmie byť null" ako na to sumár-poskytuje HTTP prepis:

<?XML verzia = "1,0" encoding = "utf-8"?>
  <mydlo:Obálka
     xmlns:mydlo ="
http://schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:XSI = "
http://www.w3.org/ 2001/XMLSchema-stupňa
     xmlns:XSD ="
http://www.w3.org/ 2001/XMLSchema">

  <mydlo:Orgán>
    <mydlo:Chyba>
      <faultcode>mydlo:Server</faultcode>
      <faultstring>
        Výnimka typu "Microsoft.SharePoint.SoapServer.SoapServerException’ bol hozen.
      </faultstring>
      <detail>
        <errorstring xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Hodnota nemôže mať hodnotu null.
        </errorstring>
      </detail>
    </mydlo:Chyba>
  </mydlo:Orgán>
</mydlo:Obálka>

samozrejme, pravdepodobne nebude pridáte prefix "s0" na vlastnú päsť, ale niektoré nástroje sú náchylné na to (ako Eclipse).

Je to o to viac mätúce / frustrujúce, pretože iné metódy tolerovať predpony.  Napríklad, The GetListCollection metóda nevadí, ak je to bol predponou, aj s predponami nezmysel ako "xyzzy minového":

image

To "hodnota nesmie byť null" sa zdá byť dosť spoločného s lists.asmx tak dúfajme, že to pomôže niekto von v budúcnosti.

</koniec>

Vyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin