Comment récupérer tous les utilisateurs dans mon domaine
-
18-09-2019 - |
Question
Je créé un domaine dans ce domaine i créé près de 500 utilisateurs accounts.I veulent récupérer tous les utilisateurs dans mon domaine .so que j'utilise le codage suivant pour récupérer tous les utilisateurs dans mon domain.But dans ce codage i affiché Seuls les 100 premiers users.And également afficher le total des entrées utilisateur 100.I ne sais pas ce problème dans ce codage.
import com.google.gdata.client.appsforyourdomain.UserService;
import com.google.gdata.data.appsforyourdomain.provisioning.UserEntry;
import com.google.gdata.data.appsforyourdomain.provisioning.UserFeed;
import com.google.gdata.util.AuthenticationException;
import com.google.gdata.util.ServiceException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
/**
* This is a test template
*/
public class AppsProvisioning {
public static void main(String[] args) {
try {
// Create a new Apps Provisioning service
UserService myService = new UserService("My Application");
myService.setUserCredentials(admin,password);
// Get a list of all entries
URL metafeedUrl = new URL("https://www.google.com/a/feeds/"+domain+"/user/2.0/");
System.out.println("Getting user entries...\n");
UserFeed resultFeed = myService.getFeed(metafeedUrl, UserFeed.class);
List<UserEntry> entries = resultFeed.getEntries();
for(int i=0; i<entries.size(); i++) {
UserEntry entry = entries.get(i);
System.out.println("\t" + entry.getTitle().getPlainText());
}
System.out.println("\nTotal Entries: "+entries.size());
}
catch(AuthenticationException e) {
e.printStackTrace();
}
catch(MalformedURLException e) {
e.printStackTrace();
}
catch(ServiceException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
}
}
Quel est le problème dans ce codage?
La solution
La liste des utilisateurs est retourné dans un flux d'atomes. Ceci est un aliment paginée, avec un maximum de 100 entrées par page. S'il y a plus d'entrées dans l'alimentation alors il y aura un atome: élément de liaison avec l'attribut rel = « next », pointant la page suivante. Vous devez continuer à suivre ces liens jusqu'à ce qu'il n'y a plus de pages « suivant ».
Voir: http://code.google.com/apis /apps/gdata_provisioning_api_v2.0_reference.html#Results_Pagination
Le code ressemblera à:
URL metafeedUrl = new URL("https://www.google.com/a/feeds/"+domain+"/user/2.0/");
System.out.println("Getting user entries...\n");
List<UserEntry> entries = new ArrayList<UserEntry>();
while (metafeedUrl != null) {
// Fetch page
System.out.println("Fetching page...\n");
UserFeed resultFeed = myService.getFeed(metafeedUrl, UserFeed.class);
entries.addAll(resultFeed.getEntries());
// Check for next page
Link nextLink = resultFeed.getNextLink();
if (nextLink == null) {
metafeedUrl = null;
} else {
metafeedUrl = nextLink.getHref();
}
}
// Handle results
for(int i=0; i<entries.size(); i++) {
UserEntry entry = entries.get(i);
System.out.println("\t" + entry.getTitle().getPlainText());
}
System.out.println("\nTotal Entries: "+entries.size());