我想在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);
连接详情:
但是当我尝试连接到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>
如果有人知道如何解决这个问题,我们将不胜感激。提前谢谢!
答案 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);
}
}