【问题标题】:Android studio - Failed to connect to LDAP serverAndroid Studio - 无法连接到 LDAP 服务器
【发布时间】:2018-07-30 14:09:53
【问题描述】:

我想在 android studio 中使用 LDAP,我在最新版本中使用 UnboundID LDAP SDK for Java。

我使用命令:

LDAPConnection ldap = new LDAPConnection("xxx.xxx.xx.xx", 389,"uid=guest3,ou=Users,dc=gal,dc=local", guest3);

连接详情:

  • 主机:xxx.xxx.xx.xx
  • 端口:389
  • dn: uid=guest3,ou=Users,dc=gal,dc=local
  • 密码:guest3

但是当我尝试连接到 LDAP 服务器时,我收到以下错误:

LDAPException(resultCode=82 (local error), errorMessage='在对 LDAP 消息进行编码或将其发送到服务器时发生错误 xx.xxx.xx.xx:389: NetworkOnMainThreadException(trace='onNetwork(StrictMode.java: 1303)/socketWrite(SocketOutputStream.java:111)/write(SocketOutputStream.java:157)/flushBuffer(BufferedOutputStream.java:82)/flush(BufferedOutputStream.java:140)/sendMessage(LDAPConnectionInternals.java:580)/sendMessage( LDAPConnection.java:4375)/进程(SimpleBindRequest.java:556)/绑定(LDAPConnection.java:2270)/绑定(LDAPConnection.java:2215)/onClick(LoginActivity.java:57)/performClick(View.java:5610 )/run(View.java:22265)/handleCallback(Handler.java:751)/dispatchMessage(Handler.java:95)/loop(Looper.java:154)/main(ActivityThread.java:6077)/invoke(方法.java:native) / run(ZygoteInit.java:866) / main(ZygoteInit.java:756)', ldapSDKVersion=4.0.4, revision=27051)')

如果有人知道如何解决此问题,将不胜感激。提前致谢!

【问题讨论】:

    标签: java android ldap unboundid-ldap-sdk


    【解决方案1】:

    NetworkOnMainThreadException 也许尽量不要在主线程上做网络。 查看reference

    获取点击事件

      public void onClick(View v) {
      new Thread(new Runnable() {
        public void run() {
          final Bitmap b = loadImageFromNetwork();
          mImageView.post(new Runnable() {
            public void run() {
              mImageView.setImageBitmap(b);
            }
          });
        }
      }).start();
    }
    

    AsyncTask 的目标是为您处理线程管理。我们前面的例子可以很容易地用 AsyncTask 重写:

    public void onClick(View v) {
      new DownloadImageTask().execute("http://example.com/image.png");
    }
    
    private class DownloadImageTask extends AsyncTask {
         protected Bitmap doInBackground(String... urls) {
             return loadImageFromNetwork(urls[0]);
         }
    
         protected void onPostExecute(Bitmap result) {
             mImageView.setImageBitmap(result);
         }
     }
    

    【讨论】:

    • 请不要只提供对网站的引用。链接可能会过期或无效。
    • 非常感谢您的回答!如果您能向我解释为什么一个简单的操作(例如显示在主屏幕上的登录)需要另一个线程,我会很高兴,因为在连接完成之前,应用程序中没有任何内容运行。除了去另一个线程之外,还有其他解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多