Kategori Arkiv: SharePoint Web Services

Sådan angives mennesker som et søgeområde / Udgangspunktet for indeksering ved hjælp af SharePoint 2013 REST API

Jeg havde grund til at arbejde med SharePoint 2013 Search API via resten for første gang. Jeg ønskede at søge efter personer, ikke dokumenter. Nøglen læring her er, at angiver du indholdskilder via sin GUID (eller i det mindste i dette tilfælde). Følgende jQuery kodestykke viser hvordan:

    loadExpertsAsync: funktion() {

        jQuery.support.cors = True;

        $.Ajax({
            URL-adresse: Dette.CreateFullApiUrl() +
                "?querytext = 'hjemmesider'&SourceId = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Færdigheder,AboutMe,Interesser,Jobtitel,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&ROWLIMIT = 99",
            metode: "FÅ",
            overskrifter: { "Acceptere": "ansøgning/json; OData = verbose" },
            cache: falsk,
            succes: funktion (resultat) {

I mit tilfælde, Jeg kører API mod SharePoint online. At få GUID'EN, Jeg har fulgt disse trin:

  1. Adgang til SharePoint administration
  2. Vælg "Søg" fra den venstre hånd navigation
  3. Vælg Administrer"resultatet kilder"
  4. Vælg "Lokale folk resultater"
  5. Kig på URL-adressen.

Min URL kiggede noget som:

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

Parameteren sourceid er hvad arbejdede nemlig mig.

(Jeg forstår at sourceid faktisk kan være en slags permanent ting med SP, men jeg vil altid tjekke alligevel 🙂 ).

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Lists.asmx, GetListItems og mapper

Jeg gjorde nogle forskning for nogen i dag omkring tjenesten list.asmx web leveres som del af SharePoint 2010 (og tidligere).  Hun kunne få listeelementerne på rodmappen (herunder navnene på undermapper), men kunne ikke få elementer i undermapper.  Jeg gjorde nogle ser på internets, og det er et overraskende fælles spørgsmål.  Endnu, Jeg kunne ikke hentes et godt svar på den enkle spørgsmål, "Hvis jeg kender mappen, Hvordan får jeg elementerne i mappen?”  At være ærlig, Jeg forsøge ikke alt, hårdt, da jeg har villet figur denne ene ud på min egen i et stykke tid Smil.

At definere dette, Jeg har oprettet et websted med navnet "Blogging scenarier" og en brugerdefineret liste med navnet "Brugerdefineret liste med Sub mapper".  Jeg derefter oprettes mapper med navnet:

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

Jeg har tilføjet et par elementer i mappen "År 2006".  Dette er, hvad det ligner:

image

Min ven ikke skriver C# kode, men snarere ved hjælp af Java, SOAP-konvolutten var så hvad hun virkelig nødvendig.  At få, Jeg skrev et bit af jQuery og derefter bruges spillemand for at få den faktiske http-samtale.

Her er den relevante jQuery (Jeg kopieres koden ned nedenfor, hvis du vil kopiere/indsætte):

image

De første nøgle er at medtage både en <queryOptions> og <QueryOptions> node.  Den anden nøgle er den <Mappe> noden er en URL-adresse, som klienten har adgang.

Der kan være andre måder at få dette, Men dette arbejdede godt for mig, når du bruger jQuery.

Her er SOAP-konvolutten for ovenstående:

<soapenv:Konvolut xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Organ>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <Listenavn>Brugerdefineret liste med Sub mapper</Listenavn>
      <viewFields>  
        <ViewFields>
          <FieldRef navn =' titel’ />
          <FieldRef navn ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Mappe>
http://demoserver1/Blogging Scenarier/lister/brugerdefineret liste med Sub mapper/år 2006</Mappe>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Organ>
</soapenv:Konvolut>

En masse eksempler og diskussion omkring dette ført mig til at tro at all I need var <QueryOptions> og angive et mappenavn.  For mig, Jeg har brug for begge ombryde det inde <queryOptions> samt angive en fuldt kvalificeret URL-adressen til den <Mappe> node.

Her er opsætningen jQuery AJAX:

$(dokument).klar til(funktion() {
       var soapEnv =
           "<soapenv:Konvolut xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Organ> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <Listenavn>Brugerdefineret liste med Sub mapper</Listenavn> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef navn =' titel’ /> \
                              <FieldRef navn ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Mappe>http://demoserver1/Blogging Scenarier/lister/brugerdefineret liste med Sub mapper/år 2006</Mappe> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Organ> \
           </soapenv:Konvolut>";

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Lists.asmx, GetList og "værdi kan ikke være null”

Jeg opdagede i dag, GetList() metode i lists.asmx webtjenesten har kaldt meget omhyggeligt, eller det er tilbøjelige til at smide en mystisk "Værdi kan ikke være null" undtagelse (og antages kan du få forbi den endnu værre generiske fejlmeddelelse, "Undtagelse af typen ' Microsoft.SharePoint.SoapServer.SoapServerException’ der blev udløst.")  Specifikt, Jeg fandt, at du ikke kan give nogen form for præfiks på metoden GetList.  Den følgende jQuery snippet illustrerer punktet:

image

Hvis du gør det, Webtjenesten svarer med "Værdi kan ikke være null" som pr. dette spillemand-forudsat http-transcript:

<?XML version = "1.0" encoding = "utf-8"?>
  <SOAP:Konvolut
     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">

  <SOAP:Organ>
    <SOAP:Fejl>
      <faultcode>SOAP:Server</faultcode>
      <faultString>
        Undtagelse af typen ' Microsoft.SharePoint.SoapServer.SoapServerException’ der blev udløst.
      </faultString>
      <detaljer>
        <ErrorString xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Værdi må ikke være null.
        </ErrorString>
      </detaljer>
    </SOAP:Fejl>
  </SOAP:Organ>
</SOAP:Konvolut>

Selvfølgelig, du ville sandsynligvis tilføje denne "s0" præfiks på dine egne, men nogle værktøjer er tilbøjelige til at gøre det. (ligesom Eclipse).

Dette er så meget desto mere forvirrende / frustrerende fordi andre metoder tolerere præfikser.  For eksempel, den GetListCollection metode huske ikke, hvis det er blevet præfikset, selv med nonsens præfikser ligesom "xyzzy":

image

Dette "værdi ikke kan være null" forekommer temmelig fælles med lists.asmx så forhåbentlig dette vil hjælpe en anden person ud i fremtiden.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin