import com.novell.ldap.*; import java.util.Enumeration; import java.util.Iterator; import java.io.UnsupportedEncodingException; public class Searchas { public static void main( String[] args ) { if (args.length != 5) { System.err.println("Usage: java Searchas <host name> <login dn>" + " <password> <search base>\n" + " <search filter>"); System.err.println("Example: java Searchas Acme.com" + " \"cn=admin,o=Acme\"" + " secret \"ou=sales,o=Acme\"\n" + " \"objectclass=*\""); System.exit(1); } int ldapPort = LDAPConnection.DEFAULT_PORT; int ldapVersion = LDAPConnection.LDAP_V3; String attrs[] ={ "cn", "sn" }; LDAPConnection lc = new LDAPConnection(); String ldapHost = args[0]; String loginDN = args[1]; String password = args[2]; String searchBase = args[3]; String searchFilter= args[4]; try { // connect to the server lc.connect( ldapHost, ldapPort ); // authenticate to the server lc.bind(ldapVersion, loginDN, password.getBytes("UTF8") ); // asynchronous search LDAPSearchQueue queue = lc.search( searchBase, // container to search LDAPConnection.SCOPE_ONE// search container only searchFilter, // search filter attrs, // return cn and sn false, // return attrs and values (LDAPSearchQueue)null, // use default search queue (LDAPSearchConstraints)null); // use default search constraints LDAPMessage message; while (( message = queue.getResponse()) != null ) { // the message is a search result reference if ( message instanceof LDAPSearchResultReference ) { String urls[] = ((LDAPSearchResultReference)message).getReferrals(); System.out.println("Search result references:"); for ( int i = 0; i < urls.length; i++ ) System.out.println(urls[i]); } // the message is a search result else if ( message instanceof LDAPSearchResult ) { LDAPEntry entry = ((LDAPSearchResult)message).getEntry(); System.out.println("\n" + entry.getDN()); System.out.println("\tAttributes: "); LDAPAttributeSet attributeSet = entry.getAttributeSet(); Iterator allAttributes = attributeSet.iterator(); while(allAttributes.hasNext()) { LDAPAttribute attribute = (LDAPAttribute)allAttributes.next(); String attributeName = attribute.getName(); System.out.println("\t\t" + attributeName); Enumeration allValues = attribute.getStringValues(); if( allValues != null) { while(allValues.hasMoreElements()) { String Value = (String) allValues.nextElement(); System.out.println("\t\t\t" + Value); } } } } // the message is a search response else { LDAPResponse response = (LDAPResponse)message; int status = response.getResultCode(); // the return code is LDAP success if ( status == LDAPException.SUCCESS ) { System.out.println("Asynchronous search succeeded."); } // the reutrn code is referral exception else if ( status == LDAPException.REFERRAL ) { String urls[]=((LDAPResponse)message).getReferrals(); System.out.println("Referrals:"); for ( int i = 0; i < urls.length; i++ ) System.out.println(urls[i]); } else { System.out.println("Asynchronous search failed."); throw new LDAPException( response.getErrorMessage(), status, response.getMatchedDN()); } } } // disconnect with the server lc.disconnect(); } catch( LDAPException e ) { System.out.println( "Error: " + e.toString() ); } catch( UnsupportedEncodingException e ) { System.out.println( "Error: " + e.toString() ); } System.exit(0); } }
JLDAP/async
猜你喜欢
转载自joy-yg.iteye.com/blog/1742265
今日推荐
周排行