Kategori Arkiv: SharePoint Web Services

Hur du anger människor som en sökomfattning / Använda SharePoint-innehållskälla 2013 REST API

Jag hade anledning att arbeta med SharePoint 2013 Sök-API via resten för första gången. Jag ville söka efter personer, inte dokument. Nyckeln för att lära sig här är att anger du innehåll källor via dess GUID (eller åtminstone i detta fall). Följande jQuery utdrag visar hur:

    loadExpertsAsync: funktionen() {

        jQuery.support.cors = sant;

        $.Ajax({
            URL: Detta.CreateFullApiUrl() +
                "?querytext = "portaler"&SourceId = "b09a7990-05ea-4af9-81ef-edfab16c4e31"" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Färdigheter,AboutMe,Intressen,Yrkestitel,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl "" +
                "&ROWLIMIT = 99",
            metoden: "FÅ",
            headers: { "Acceptera": "Application/json; OData = verbose" },
            cache: falskt,
            framgång: funktionen (resultat) {

I mitt fall, Jag kör API mot SharePoint online. Att få GUID, Jag följde stegen:

  1. Komma åt SharePoint admin center
  2. Välj "Sök" från den vänstra navigeringen
  3. Välj hantera"resultatet källor"
  4. Välj "Lokalbefolkningen resultat"
  5. Titta på Webbadressen.

Min URL såg något liknande:

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

Parametern sourceid är vad arbetat för jag.

(Jag förstår att målentiteten kan faktiskt vara ett slags permanent sak med SP, men jag ska alltid kontrollera ändå 🙂 ).

</slutet>

undefinedPrenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Lists.asmx, GetListItems och mappar

Jag gjorde lite forskning för någon dag runt webbtjänsten list.asmx som ingår i SharePoint 2010 (och tidigare).  Hon kunde få listobjekten i rotmappen (inklusive namnen på undermappar), men det gick inte att hämta objekt i undermappar.  Jag gjorde några titta på Internet och det är en förvånansvärt gemensamma fråga.  Ännu, Jag kunde inte få ett bra svar på den enkla frågan, "om jag vet att mappen, Hur skaffar jag objekten i mappen?”  Att vara ärlig, Jag försöker inte allt hårt eftersom jag har ville bild man ut på min egen ett tag Leende.

Att ställa in här, Jag har skapat en webbplats med namnet "Blogga Scenarios" och en anpassad lista med namnet "Anpassad lista med Sub mappar".  Mappar med följande namn skapas:

  • År 2005
  • År 2006
  • År 2007

Jag lade till ett par artiklar till mappen "År 2006".  Det är vad det ser ut:

image

Min vän inte skriva C#-kod utan snarare använda Java, SOAP-kuvertet var alltså det hon verkligen behövs.  Att få som, Jag skrev en bit av jQuery och sedan används Spelman för att få http-samtalet.

Här är den relevanta jQuery (Jag kopierade koden anges nedan om du vill kopiera och klistra in):

image

De första nyckeln är omfatta både en <queryOptions> och <QueryOptions> nod.  Den andra nyckeln är att den <Mappen> noden är en URL-adress som klienten har tillgång.

Det kan finnas andra sätt att få detta, men detta fungerat bra för mig när du använder jQuery.

Här är SOAP-kuvertet för ovanstående:

<soapenv:Kuvert xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Organ>
    <GetListItems xmlns =’
http://schemas.microsoft.com/SharePoint/SOAP/’>
      <Listnamn>Anpassad lista med undermappar</Listnamn>
      <viewFields>  
        <ViewFields>
          <FieldRef namn = "titel’ />
          <FieldRef namn ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Mappen>
http://demoserver1/Blogging Scenarier/listor/Custom lista med Sub mappar/år 2006</Mappen>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Organ>
</soapenv:Kuvert>

En hel del exempel och diskussion kring detta ledde mig att tro att allt jag behöver var <QueryOptions> och ange ett mappnamn.  För mig, Jag behöver både radbryta det inuti <queryOptions> samt ange en fullständig URL för den <Mappen> nod.

Här är jQuery AJAX installationsprogrammet:

$(dokument).redo(funktionen() {
       var soapEnv =
           "<soapenv:Kuvert xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Organ> \
                    <GetListItems xmlns =’http://schemas.microsoft.com/SharePoint/SOAP/’> \
                       <Listnamn>Anpassad lista med undermappar</Listnamn> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef namn = "titel’ /> \
                              <FieldRef namn ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Mappen>http://demoserver1/Blogging Scenarier/listor/Custom lista med Sub mappar/år 2006</Mappen> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Organ> \
           </soapenv:Kuvert>";

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Lists.asmx, GetList och "värde kan inte vara null”

Jag upptäckte idag att GetList() metod i lists.asmx webbtjänsten har att kallas mycket noggrant eller den är benägna att kasta en mystisk "Värdet får inte vara null" undantag (och som förutsatt att du kan komma förbi ännu värre allmänna felmeddelande, "-Undantag av typ" Microsoft.SharePoint.SoapServer.SoapServerException’ kastades.")  Särskilt, Jag tyckte att du inte kan tillhandahålla någon form av prefixet på metoden GetList.  Följande jQuery utdrag illustrerar punkten:

image

Om du gör det, webbtjänsten svarar med "Värdet får inte vara null" visas enligt detta Spelman-enligt HTTP avskrift:

<?XML-version = "1.0" Encoding = "utf-8"?>
  <tvål:Kuvert
     xmlns:SOAP ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/2001/XMLSchema">

  <tvål:Organ>
    <tvål:Fel>
      <faultcode>tvål:Servern</faultcode>
      <faultstring>
        -Undantag av typ "Microsoft.SharePoint.SoapServer.SoapServerException’ kastades.
      </faultstring>
      <detalj>
        <ErrorString xmlns ="
http://schemas.microsoft.com/SharePoint/SOAP/">
Värdet får inte vara null.
        </ErrorString>
      </detalj>
    </tvål:Fel>
  </tvål:Organ>
</tvål:Kuvert>

Självklart, du skulle inte förmodligen till att "s0" prefix på egen, men vissa verktyg är benägna att göra det. (som Eclipse).

Detta är desto mer förvirrande / frustrerande eftersom andra metoder tolerera prefix.  Till exempel, den GetListCollection metoden hänsyn inte till om det är förutfastställt, även med nonsens prefix som "xyzzy":

image

Detta "värdet inte får vara null" verkar ganska vanligt med lists.asmx så förhoppningsvis detta kommer att hjälpa någon i framtiden.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin