我正在使用com.ning.http.client.AsyncHttpClient
如下方式打开 Web 套接字连接。
AsyncHttpClient client = new AsyncHttpClient();
try {
client.prepareGet(url)
.execute(new WebSocketUpgradeHandler.Builder()
.addWebSocketListener(new WebSocketListener() {
@Override
public void onOpen(WebSocket webSocket) {
Log.d(TAG, "opened");
}
@Override
public void onClose(WebSocket webSocket) {
Log.d(TAG, "closed");
}
@Override
public void onError(Throwable throwable) {
Log.d(TAG, "error");
}
}).build());
} catch (IOException e) {
e.printStackTrace();
}
这在 github 文档https://github.com/AsyncHttpClient/async-http-client中有概述。
但是,我看到onError
每次都被调用,但有一个android.os.NetworkOnMainThreadException
例外。
为什么是这样?我真的需要一个单独的线程,客户端可以在其中操作或 AsyncTask 的实例吗?