android 平台使用ldap服务
16lz
2021-12-04
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 {@Overrideprotected 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() {@Overridepublic 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/
更多相关文章
- 按钮的多样话 selector的使用
- Android(安卓)资源文件中的符号含义与说明
- drawable中的layer-list使用
- TextView添加Onclick点击无效没反应解决办法
- 【转载】android仿QQ列表的效果实现
- Android设置“android:clickable="false"无效。点击事件依旧触发
- Android,谁动了我的内存
- Android(安卓)入门文档_Android(安卓)4.0后JNI所做的更改
- android内存处理机制