Android studio - 无法连接到LDAP服务器

时间:2018-02-20 09:09:24

标签: java android ldap unboundid-ldap-sdk

我想在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);

连接详情:

  • host:xxx.xxx.xx.xx
  • port:389
  • dn:uid = guest3,ou = Users,dc = gal,dc = local
  • 密码:guest3

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

  

LDAPException(resultCode = 82(本地错误),errorMessage =&#39;编码LDAP消息或将其发送到服务器xx.xxx.xx.xx时发生错误:389:NetworkOnMainThreadException(trace =&#39; 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)/ process(SimpleBindRequest.java:556)/ bind(LDAPConnection.java:2270)/ bind(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(Method.java:native)/ run(ZygoteInit.java:866)/ main(ZygoteInit.java:756)&#39;,ldapSDKVersion = 4.0.4,revision = 27051)&#39;)< / p>

如果有人知道如何解决这个问题,我们将不胜感激。提前谢谢!

1 个答案:

答案 0 :(得分:0)

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);
     }
 }