连接Android和MongoDB时超时,连接失败

连接Android和MongoDB时超时,连接失败,android,mongodb,android-studio,Android,Mongodb,Android Studio,我正在尝试将我的Android应用程序连接到MongoDB并向其插入值。应用程序因提示以下错误而崩溃: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.preyanshu.mongodblogin/com.example.preyanshu.mongodblogin.MainActivity}: com.mongodb.MongoTimeoutException: Timed out a

我正在尝试将我的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);

    }
}
该应用程序运行完全正常


如果我能找到一个解决方案,那将是一个很大的帮助。

错误清楚地表明无法找到/连接数据库。这不是代码错误,如果您正在读取而不是插入,仍然会出现相同的错误。这是你的andriod应用程序,你正在尝试通过手机连接吗?还是通过开发系统?如果是通过系统连接的,则尝试通过Mongo客户端甚至Mongo compass连接到Mongo。很肯定这也会失败。只是网络问题,要么机器不可用,要么安全组没有暴露端口。你的开发人员是解决这个问题的最佳人选:-祝你好运

编辑,快速查看你的代码和你的URL模式看起来是错误的,现在我觉得输入所有的网络废话很愚蠢

 MongoClient mongoClient = new MongoClient("10.100.17.139",27017);
它不遵循URL模式,正确的模式为:

"mongodb://10.100.17.139" 

或者您需要将其包装为新服务器

您的电脑/笔记本电脑和设备是否在同一网络中?是的,它在同一网络中。您的防火墙是否已禁用?我已禁用它并进行了检查,但它仍然不工作。是否已启动并运行?你能从电脑上telnet 10.100.17.139 27017吗?你能在手机上做同样的事情吗?
"mongodb://10.100.17.139"