문제
거의 500 명의 사용자 계정을 생성 한 도메인에서 하나의 도메인을 만들었습니다. 도메인의 모든 사용자를 검색하고 싶습니다. 다음 코딩을 사용하여 내 도메인의 모든 사용자를 검색합니다. 그러나 코딩에서는 처음 100 만 표시했습니다. 또한 총 사용자 항목 100을 표시합니다.이 코딩에서 어떤 문제가 있는지 모릅니다.
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();
}
}
}
이 코딩에서 어떤 문제가 있습니까?
해결책
사용자 목록은 원자 피드에서 반환됩니다. 이것은 페이지 당 최대 100 개의 항목이있는 페이징 피드입니다. 피드에 더 많은 항목이 있으면 Atom : rel = "next"속성으로 링크 요소가 있습니다. 다음 페이지를 가리킬 수 있습니다. 더 이상 '다음'페이지가 없을 때 까지이 링크를 계속 따를 필요가 있습니다.
보다: http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html#results_pagination
코드는 다음과 같습니다.
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());
제휴하지 않습니다 StackOverflow