Ошибка подключения из-за тайм-аута при подключении Android к MongoDB - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь подключить свое приложение Android к MongoDB и вставить в него значения.Приложение аварийно завершает работу, вызывая следующую ошибку:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.preyanshu.mongodblogin/com.example.preyanshu.mongodblogin.MainActivity}: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=10.100.17.139:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.SocketTimeoutException: failed to connect to /10.100.17.139 (port 27017) after 20000ms}}]

Это код, который я использую для прямого подключения к базе данных:

public class MainActivity extends AppCompatActivity {
Button login, ViewBtn;
EditText u_name, pwd;
TextView showView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        if (android.os.Build.VERSION.SDK_INT > 9)
        {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        showView = (TextView)findViewById(R.id.showView);
        ViewBtn = (Button)findViewById(R.id.login);
        u_name = (EditText)findViewById(R.id.userName);
        pwd = (EditText)findViewById(R.id.password);
        login = (Button)findViewById(R.id.login);

        MongoClient mongoClient = new MongoClient("10.100.17.139",27017);

        MongoCredential credential;
        credential = MongoCredential.createCredential("sampleUser", "LoginSample", "password".toCharArray());

        MongoDatabase dbs = (MongoDatabase) mongoClient.getDatabase("LoginSample");

        MongoCollection<Document> coll = dbs.getCollection("LoginData");

        Document docs = new Document("name","Test").append("password","Test");

        coll.insertOne(docs);

    }
}

Ошибка появляется только при попыткевставить документы.Когда я комментирую строку -

coll.insertOne(docs);

, приложение работает абсолютно нормально.

Было бы очень полезно, если бы я нашел решение для этого.

1 Ответ

0 голосов
/ 30 мая 2018

В ошибке четко указано, что база данных не может быть найдена / подключена.Это не ошибка кода, если вы читаете, а не вставляете, все равно будет та же ошибка.Это ваше приложение andriod, вы пытаетесь подключиться через телефон?Или через систему разработки?Если это через систему, то попробуйте подключиться к Mongo через клиент Монго или даже компас Монго.Уверен, что это тоже не удастся.Просто проблема с сетью, либо машина недоступна, либо группы безопасности не открыли порт.Ваш разработчик будет лучшим человеком для решения этой проблемы: -) Удачи!

Редактировать, Быстрый взгляд на ваш код и ваш шаблон URL выглядит неправильно, теперь я чувствую себя глупо, набрав всю сеть хуллалала

 MongoClient mongoClient = new MongoClient("10.100.17.139",27017);

ЭТО не следует за шаблоном URL, правильный шаблон будет:

"mongodb://10.100.17.139" 

Или вам нужно обернуть его как Новый сервер!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...