Αρχεία κατηγοριών: Υπηρεσίες Web του SharePoint

Πώς να καθορίσετε ένα εύρος αναζήτησης άνθρωποι / Προέλευση περιεχομένου χρησιμοποιώντας SharePoint 2013 ΥΠΌΛΟΙΠΟ API

Είχα λόγο να εργαστεί με το SharePoint 2013 API αναζήτησης μέσω υπόλοιπο για πρώτη φορά. Θα ήθελα να ψάξει για τους ανθρώπους, δεν έγγραφα. Το κλειδώστε τη μαθαίνοντας εδώ είναι ότι μπορείτε να καθορίσετε προελεύσεις περιεχομένου μέσω του GUID (ή τουλάχιστον σε αυτή την περίπτωση). Το ακόλουθο απόσπασμα jQuery πώς:

    loadExpertsAsync: συνάρτηση() {

        jQuery.support.cors = TRUE;

        $.Ajax({
            διεύθυνση URL: αυτό.CreateFullApiUrl() +
                "?querytext = «πύλες»&"αναγνωριστικό προέλευσης" = "b09a7990-05ea-4af9-81ef-edfab16c4e31"" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Δεξιότητες,AboutMe,Συμφέροντα,Τίτλος εργασίας,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl»" +
                "&ROWLIMIT = 99",
            μέθοδος: "ΠΆΡΕΤΕ",
            κεφαλίδες: { "Δεχθεί": "εφαρμογή/json; OData = λεπτομερή" },
            cache: ψευδές,
            επιτυχία: συνάρτηση (αποτέλεσμα) {

Στην περίπτωσή μου, Τρέχω το API εναντίον του SharePoint σε απευθείας σύνδεση. Να πάρει το GUID, Ακολούθησα τα βήματα:

  1. Να επισκεφτείτε το κέντρο admin του SharePoint
  2. Επιλέξτε "Αναζήτηση" από το αριστερό χέρι πλοήγησης
  3. Επιλέξτε "Διαχείριση αποτέλεσμα πηγές"
  4. Επιλέξτε "Αποτελέσματα ντόπιοι"
  5. Εξετάσουμε το URL.

URL μου φαινόταν κάτι σαν:

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

Η παράμετρος αναγνωριστικού προέλευσης είναι τι λειτούργησε για μένα.

(Καταλαβαίνω ότι το "αναγνωριστικό προέλευσης" στην πραγματικότητα μπορεί να είναι ένα είδος μόνιμης πράγμα με SP, but I’ll always check anyway 🙂 ).

</Τέλος>

undefinedΕγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Lists.asmx, GetListItems και φάκελοι

Έκανα κάποια έρευνα για κάποιον σήμερα γύρω από την υπηρεσία web list.asmx παρέχεται ως μέρος του SharePoint 2010 (και παλιότερες).  Ήταν σε θέση να πάρετε τα στοιχεία λίστας στο φάκελο ρίζας (καθώς και τα ονόματα των υποφακέλων), αλλά δεν ήταν δυνατή η λήψη στοιχείων σε υποφακέλους.  Έκανα κάποια ρίχνοντας μια ματιά για το Ίντερνετ και είναι μια εκπληκτικά κοινή ερώτηση.  Ακόμη, Θα μπορούσα να πάρετε μια καλή απάντηση στο απλό ερώτημα, "αν γνωρίζω το φάκελο, Πώς μπορώ να πάρω τα στοιχεία στο φάκελο?”  Για να είμαι ειλικρινής, Εγώ δεν προσπαθώ τόσο σκληρά, δεδομένου ότι έχω ήθελε να το καταλάβουμε αυτό μία έξω από μόνος μου για μια στιγμή Χαμόγελο.

Να ορίσετε το χρόνο αυτό, Δημιούργησα μια τοποθεσία που ονομάζεται «Blogging σενάρια» και μια προσαρμοσμένη λίστα όνομα "Προσαρμοσμένη λίστα με υπο-φάκελλοι".  Δημιούργησα στη συνέχεια φακέλους με το όνομα:

  • Έτος 2005
  • Έτος 2006
  • Έτος 2007

Πρόσθεσα μερικά στοιχεία στο φάκελο «Έτους 2006».  Αυτό είναι τι μοιάζει:

image

Ο φίλος μου δεν είναι σύνταξη κώδικα C# αλλά μάλλον χρήση της Java, έτσι το φάκελο SOAP ήταν ό, τι είναι πραγματικά αναγκαία.  Για να το επιτύχουμε, Μου έγραψε λίγο jQuery και στη συνέχεια χρησιμοποιείται fiddler για να λάβετε την πραγματική συνομιλία HTTP.

Εδώ είναι το σχετικό jQuery (Αντέγραψα κώδικα κάτω κάτω αν θέλετε για την αντιγραφή/επικόλληση):

image

Τους πρώτο κλειδί είναι να περιλαμβάνουν τόσο έναν <queryOptions> και <QueryOptions> Κόμβος.  Το δεύτερο κλειδί είναι ότι η <Φάκελος> ο κόμβος είναι μια διεύθυνση URL, όπου ο υπολογιστής-πελάτης έχει πρόσβαση.

Μπορεί να υπάρχουν άλλοι τρόποι να ολοκληρώσουμε αυτό το, αλλά αυτή λειτούργησε καλά για μένα όταν χρησιμοποιώντας jQuery.

Εδώ είναι το φάκελο SOAP για τα ανωτέρω:

<soapenv:Φάκελος xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Οργανισμός>
    <GetListItems xmlns =’
http://schemas.microsoft.com/SharePoint/SOAP/’>
      <listName>Προσαρμοσμένη λίστα με φακέλους Sub</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef όνομα =' Τίτλος’ />
          <FieldRef όνομα ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Φάκελος>
http://demoserver1/Blogging Σενάρια/κατάλογοι/προσαρμοσμένη λίστα με Sub φακέλων/έτος 2006</Φάκελος>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Οργανισμός>
</soapenv:Φάκελος>

Πολλά παραδείγματα και συζητήσεις γύρω από αυτό με ώθησε να πιστεύουν ότι ήταν όλα τα χρειάζομαι <QueryOptions> και καθορίστε ένα όνομα φακέλου.  Για μένα, Μου χρειάζεται τόσο αναδιπλώνονται μέσα <queryOptions> καθώς και να καθορίσετε ένα έγκυρο URL για το <Φάκελος> Κόμβος.

Εδώ είναι το jQuery AJAX εγκατάστασης:

$(έγγραφο).έτοιμο(συνάρτηση() {
       var soapEnv =
           "<soapenv:Φάκελος xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Οργανισμός> \
                    <GetListItems xmlns =’http://schemas.microsoft.com/SharePoint/SOAP/’> \
                       <listName>Προσαρμοσμένη λίστα με φακέλους Sub</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef όνομα =' Τίτλος’ /> \
                              <FieldRef όνομα ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Φάκελος>http://demoserver1/Blogging Σενάρια/κατάλογοι/προσαρμοσμένη λίστα με Sub φακέλων/έτος 2006</Φάκελος> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Οργανισμός> \
           </soapenv:Φάκελος>";

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Lists.asmx, GetList και "τιμή δεν είναι δυνατό να είναι null”

Ανακάλυψα σήμερα που το GetList() μέθοδο σε lists.asmx υπηρεσία Web πρέπει να αποκαλείται πολύ προσεκτικά ή είναι επιρρεπείς να ρίξει ένα μυστηριώδες εξαίρεση "Αξία δεν μπορεί να είναι null" (και αυτό υποθέτοντας ότι μπορείτε να λάβετε παρελθόν το ακόμη χειρότερο μήνυμα γενικού σφάλματος, "Εξαίρεση του τύπου «Microsoft.SharePoint.SoapServer.SoapServerException’ δημιουργήθηκε.")  Ειδικά, Βρήκα ότι δεν μπορείτε να δώσετε οποιοδήποτε είδος πρόθεμα σχετικά με τη μέθοδο GetList.  Το ακόλουθο απόσπασμα jQuery διαφωτίζει το σημείο:

image

Αν το κάνετε που, η υπηρεσία web ανταποκρίνεται με "Αξία δεν μπορεί να είναι null" σύμφωνα με αυτό fiddler-παρείχε την απομαγνητοφώνηση HTTP:

<?XML έκδοση = 1.0»" κωδικοποίηση = "utf-8"?>
  <σαπούνι:Φάκελος
     xmlns:σαπούνι ="
http://schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:xsd ="
http://www.w3.org/ 2001/σχήματος XML">

  <σαπούνι:Οργανισμός>
    <σαπούνι:Σφάλμα>
      <faultcode>σαπούνι:Διακομιστή</faultcode>
      <faultstring>
        Εξαίρεση του τύπου «Microsoft.SharePoint.SoapServer.SoapServerException’ ρίχτηκε.
      </faultstring>
      <λεπτομέρεια>
        <errorstring xmlns ="
http://schemas.microsoft.com/SharePoint/SOAP/">
Αξία δεν μπορεί να είναι null.
        </errorstring>
      </λεπτομέρεια>
    </σαπούνι:Σφάλμα>
  </σαπούνι:Οργανισμός>
</σαπούνι:Φάκελος>

Φυσικά, πιθανώς δεν θα προσθέτετε πρόθεμα "s0" για τη δική σας, αλλά μερικά εργαλεία είναι επιρρεπείς να κάνουμε (όπως το Eclipse).

Αυτό είναι όλο και πιο συγκεχυμένη / απογοητευτικό επειδή άλλες μεθόδους ανέχεται προθέματα.  Για παράδειγμα, το GetListCollection μέθοδος δεν πειράζει εάν είναι γαλλική, ακόμη και με ανοησίες προθέματα όπως "xyzzy":

image

Αυτό "η τιμή δεν μπορεί να είναι null" φαίνεται αρκετά κοινά με lists.asmx, οπότε ελπίζω αυτό θα βοηθήσει κάποιος στο μέλλον.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin