我正在尝试使用 OpenLDAP API 进行 LDAP 搜索。我已经成功连接并绑定(bind)到服务器。我已经使用 ldap_search_ext_s() 完成了搜索,并使用 ldap_parse_result() 解析了结果。但是,我似乎不知道如何获得搜索的实际结果。不幸的是,OpenLDAP C API 最近发生了变化,Internet 上的许多现有示例并未使用当前的 API。
我已经尝试使用 ldap_first_attribute()、ldap_next_attribute() 和 ldap_get_values(),如 http://www-archive.mozilla.org/directory/csdk-docs/search.htm 所示(示例 6-13)。但是,看来 ldap_get_values() 现已弃用,而 ldap_get_values_len() 是最接近的替代品。新函数返回 berval**,而不是返回 char**。我尝试通过创建值为 barval**[i] 的 berval* 来调整此示例代码。这会导致编译成功,但会在 ber_scanf() 处出现核心转储。
有人知道如何使用 OpenLDAP C API 获取 LDAP 搜索的结果吗?
更新:
特别是,我询问如何获取搜索消息中请求的属性。
最佳答案
搜索请求的结果始终包含一系列 SearchResultEntry
或 SeachResultReference
消息,该系列由 SearchResultDone
消息终止。调用 getNextAttribute
(以任何语言和任何 API)毫无意义,因为搜索结果是消息列表。 API 应该以调用者可以简单地检索条目或引用列表的方式打包条目或引用数组。寻找一种可以做到这一点的方法。
关于c++ - OpenLDAP API 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17350682/