当前位置: 代码迷 >> Android >> android 平台运用ldap服务
  详细解决方案

android 平台运用ldap服务

热度:93   发布时间:2016-04-28 08:12:49.0
android 平台使用ldap服务

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/

?

?

  相关解决方案