android sdk并没有提供ldap 的接口,看到网上有封装好的jar包。
ldap sdk下载地址:https://www.unboundid.com/products/ldap-sdk/files/unboundid-ldapsdk-2.3.4-se.zip
将unboundid-ldapsdk-se.jar引用到项目中。
MainAcitvity.java
package com.example.flashcall;import java.util.LinkedList;import android.app.Activity;import android.os.Bundle;import com.example.flashcall.SearchThread.OnSearchFinishedListener;import com.unboundid.ldap.sdk.Filter;import com.unboundid.ldap.sdk.LDAPException;import com.unboundid.ldap.sdk.SearchResult;import com.unboundid.ldap.sdk.SearchResultEntry;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Make sure that the filter is valid. String filterString = "(cn=test)"; Filter filter = null; try { filter = Filter.create(filterString); } catch (LDAPException le) { } // Create a thread to process the search. if (filter != null) { final SearchThread searchThread = new SearchThread(filter); searchThread.setResultListner(new OnSearchFinishedListener() { @Override public void onFinished(SearchResult result) { final int entryCount = result.getEntryCount(); if (entryCount == 0) { } else if (entryCount == 1) { SearchResultEntry ret = result.getSearchEntries() .get(0); ToolUtil.log(ret.toString()); } else { final LinkedList<SearchResultEntry> entries = new LinkedList<SearchResultEntry>( result.getSearchEntries()); } } }); searchThread.start(); } else { } }}
?LdapServer.java
package com.example.flashcall;import com.unboundid.ldap.sdk.LDAPConnection;public class LdapServer { // The port number of the directory server. private static final int PORT = 389; // The base DN to use when searching the server. public static final String BASE_DN = "dc=example,dc=com"; // The address of the directory server. private static final String HOST = "127.0.0.1"; private static final String BIND_DN = "domain\\username"; private static final String BIND_PW = "123456"; private static LDAPConnection conn; public static LDAPConnection getConnection() { if (conn == null) { try { conn = new LDAPConnection(HOST, PORT, BIND_DN, BIND_PW); } catch (Exception e) { } } return conn; }}
?
SearchThread.java
package com.example.flashcall;import com.unboundid.ldap.sdk.Filter;import com.unboundid.ldap.sdk.LDAPConnection;import com.unboundid.ldap.sdk.LDAPException;import com.unboundid.ldap.sdk.LDAPSearchException;import com.unboundid.ldap.sdk.ResultCode;import com.unboundid.ldap.sdk.SearchRequest;import com.unboundid.ldap.sdk.SearchResult;import com.unboundid.ldap.sdk.SearchScope;final class SearchThread extends Thread { /** * The size limit that will be used for searches. */ static final int SIZE_LIMIT = 100; /** * The time limit (in seconds) that will be used for searches. */ static final int TIME_LIMIT_SECONDS = 30; // The filter to use for the search. private final Filter filter; public OnSearchFinishedListener l; public void setResultListner(OnSearchFinishedListener ml) { l = ml; }; SearchThread(final Filter filter) { ToolUtil.log(filter); this.filter = filter; } @Override() public void run() { SearchResult result = null; LDAPConnection conn = null; try { conn = LdapServer.getConnection(); final SearchRequest request = new SearchRequest(LdapServer.BASE_DN, SearchScope.SUB, filter); request.setSizeLimit(SIZE_LIMIT); request.setTimeLimitSeconds(TIME_LIMIT_SECONDS); result = conn.search(request); } catch (LDAPException lse) { } finally { if (conn != null) { conn.close(); } } if (result != null) { final ResultCode resultCode = result.getResultCode(); if (resultCode != ResultCode.SUCCESS) { } else { if (l != null) { l.onFinished(result); } } } } public interface OnSearchFinishedListener { public void onFinished(SearchResult ret); }}
?
?
注意事项:
1、若包引用无效,在“Order and Export”中将jar文件勾上,clean一下。
2、在manifest中添加<uses-permission android:name="android.permission.INTERNET" />权限。
?
参考文档:
https://www.unboundid.com/products/ldapsdk/
?
?