archivi categoria: SharePoint Web Services

Come specificare la gente come un ambito di ricerca / Origine di contenuto utilizzando SharePoint 2013 API REST

Ho avuto ragione a lavorare con SharePoint 2013 API di ricerca tramite REST per la prima volta. Ho voluto cercare persone, non documenti. La chiave qui è quella di apprendimento è specificare origini di contenuto tramite il relativo GUID (o almeno in questo caso). Illustrato nel seguente frammento di jQuery come:

    loadExpertsAsync: funzione() {

        jQuery.support.cors = true;

        $.AJAX({
            URL: Questo.CreateFullApiUrl() +
                "?QueryText = 'portali'&SourceId = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&scegliereProprietà ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Competenze,AboutMe,Interessi,JobTitle,PastProjects,PictureURL,PictureURL,TwitterHandle,LinkedInProfileUrl,PictureURL,GoogleCirclesProfileUrl'" +
                "&ROWLIMIT = 99",
            Metodo.: "Ottieni",
            intestazioni: { "Accettare": "applicazione/json; OData = verbose" },
            cache: falso,
            successo: funzione (risultato) {

Nel mio caso, Sono in esecuzione le API contro SharePoint online. Per ottenere il GUID, Ho seguito questi passaggi:

  1. Accesso al centro di admin di SharePoint
  2. Selezionare "Cerca" dalla mano sinistra spostamento
  3. Selezionare "Gestione fonti di risultato"
  4. Selezionare "Risultati di gente locale"
  5. Guardate l'URL.

Il mio URL sembrava qualcosa come:

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

Il parametro sourceid è ciò che ha funzionato per me.

(Capisco che il sourceid potrebbe in realtà essere una sorta di permanente cosa con SP, ma sarò sempre controllare comunque 🙂 ).

</fine>

undefinedIscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Lists.asmx, GetListItems e le cartelle

Stavo facendo qualche ricerca per qualcuno oggi intorno al servizio di web list.asmx fornito come parte di SharePoint 2010 (e precedenti).  Lei era in grado di ottenere gli elementi dell'elenco alla cartella principale (anche i nomi delle sotto-cartelle), ma non poteva ottenere elementi in sotto-cartelle.  Ho fatto alcuni guardando in giro su internets ed è una domanda sorprendentemente comune.  Ancora, Non ho potuto ottenere una buona risposta alla domanda semplice, "se conosco la cartella, come ottenere gli elementi nella cartella?”  Ad essere onesti, Non provato duramente tutto ciò che dal momento che ho voluto capire questo una fuori il mio per un po ' sorriso, sorridere.

Per configurare questo, Ho creato un sito denominato "Blogging scenari" e un elenco personalizzato denominato "Elenco personalizzato con Sub cartelle".  Ho poi creato cartelle denominate:

  • Anno 2005
  • Anno 2006
  • Anno 2007

Ho aggiunto alcuni articoli nella cartella "Anno 2006".  Questo è quello che sembra:

image

Il mio amico non è scrittura di codice c#, ma piuttosto utilizzando Java, così la SOAP envelope era cosa aveva bisogno.  Per ottenere che, Ho scritto un po ' di jQuery e quindi utilizzato violinista per ottenere la conversazione reale HTTP.

Ecco le pertinenti jQuery (Ho copiato il codice giù sotto se volete copiare/incollare):

image

Essi prima chiave consiste nell'includere sia un <queryOptions> e <QueryOptions> nodo.  La seconda chiave è che il <Cartella> il nodo è un URL a cui il cliente ha accesso.

Ci possono essere altri modi per arrivare a questo, ma questo ha funzionato bene per me quando si utilizza jQuery.

Ecco la SOAP envelope sopra:

<soapenv:Busta xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Corpo>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Elenco personalizzato con sottocartelle</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef Name =' titolo’ />
          <FieldRef Name ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Cartella>
http://demoserver1/Blogging Elenco di scenari/liste/Custom con Sub cartelle/anno 2006</Cartella>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Corpo>
</soapenv:Busta>

Un sacco di esempi e la discussione intorno a questo mi ha portato a credere che tutto quello che serve è stato <QueryOptions> e specificare un nome di cartella.  Per me, Io ho bisogno di entrambi avvolgerla all'interno <queryOptions> così come specificare un URL completo per il <Cartella> nodo.

Qui è l'installazione di AJAX jQuery:

$(documento).pronto(funzione() {
       var soapEnv =
           "<soapenv:Busta xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Corpo> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Elenco personalizzato con sottocartelle</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef Name =' titolo’ /> \
                              <FieldRef Name ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Cartella>http://demoserver1/Blogging Elenco di scenari/liste/Custom con Sub cartelle/anno 2006</Cartella> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Corpo> \
           </soapenv:Busta>";

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Lists.asmx, GetList e "valore non può essere null”

Ho scoperto oggi che la GetList() Metodo in lists.asmx servizio Web deve essere chiamato con molta attenzione, o è incline a generare un misterioso "Valore non può essere null" eccezione (e che sta assumendo che si può andare oltre il messaggio di errore generico anche peggio, "Eccezione di tipo ' SoapServerException’ è stato gettato.")  In particolare, Ho trovato che è non può fornire qualsiasi tipo di prefisso del metodo GetList.  Il seguente frammento di jQuery illustra il punto:

image

Se lo fai, il servizio web risponde con "Valore non può essere null" come per questo violinista-fornito di trascrizione HTTP:

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

  <sapone:Corpo>
    <sapone:Colpa>
      <FaultCode>sapone:Server</FaultCode>
      <FaultString>
        Eccezione di tipo ' SoapServerException’ è stato gettato.
      </FaultString>
      <dettaglio>
        <ErrorString xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Valore non può essere null.
        </ErrorString>
      </dettaglio>
    </sapone:Colpa>
  </sapone:Corpo>
</sapone:Busta>

Naturalmente, è probabilmente non sarebbe aggiungere tale prefisso "s0" sul proprio, ma alcuni strumenti sono inclini a farlo (come eclissi).

Questo è ancora più confuso / frustrante perché altri metodi tollerano i prefissi.  Per esempio, il GetListCollection Metodo non mente se esso è stato preceduto da, anche con i prefissi di sciocchezze come "xyzzy":

image

Questo "valore non può essere null" sembra piuttosto comune con lists.asmx quindi speriamo questo aiuterà qualcuno fuori in futuro.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin