Пытаюсь подключить к своему Android-приложению удалённую базу MongoDB:
try {
String str = "";
MongoClientURI uri = new MongoClientURI("mongodb://byulent:mypass@ds231549.mlab.com:31549/mydb");
MongoClient mongoClient = new MongoClient(uri);
MongoDatabase db = mongoClient.getDatabase(uri.getDatabase());
MongoCollection<Document> photos = db.getCollection("photos");
FindIterable<Document> cursor = photos.find();
Iterator i = cursor.iterator();
while (i.hasNext()){
Log.d("obj", i.next().toString());
}
//Toast.makeText(context, "Succesfully connected to MongoDB", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Log.e("mongodb", e.getMessage());
}
Но при попытке получения данных из коллекции мне постоянно выводится следующая ошибка:
E/mongodb: Timed out after 30000 ms while waiting to connect. Client view of cluster state
is {type=UNKNOWN, servers=[{address=ds231549.mlab.com:31549, type=UNKNOWN, state=CONNECTING,
exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by
{java.net.SocketTimeoutException: failed to connect to ds231549.mlab.com/34.245.70.193
(port 31549) after 20000ms}}]
Появляется ошибка на этапе действия итератора.
Поначалу грешил на необходимость подключения VPN для доступа к Mlab, но, когда подключился, ошибка не исчезла.
Из-за чего это происходит и как это исправить?
Возможная причина - несоответствие драйвера и версии mongo сервера, сравните какой JAR и какой фактически версии сервер? (Отсюда https://stackoverflow.com/a/38570463/5892568)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите, есть такая задача: есть url страницы, содержащей много лишних элементов, как лучше их удалить перед выводом в webview или во время вывода...