将android应用程序同步到本地主机上的couchbase服务器

将android应用程序同步到本地主机上的couchbase服务器,android,synchronization,couchbase,couchbase-lite,couchbase-sync-gateway,Android,Synchronization,Couchbase,Couchbase Lite,Couchbase Sync Gateway,我正在尝试将我的android应用程序与本地主机上的couchbase服务器连接 我已按如下方式初始化数据库和管理器: 初始化数据库后,我调用startSync()函数,接受数据库类型的参数 public static final String DB_NAME = "firstdb"; public static final String TAG = "firstdb";private void helloCBL() {

我正在尝试将我的android应用程序与本地主机上的couchbase服务器连接 我已按如下方式初始化数据库和管理器: 初始化数据库后,我调用startSync()函数,接受数据库类型的参数

                  public static final String DB_NAME = "firstdb";
                    public static final String TAG = "firstdb";private void helloCBL() {
                        Manager manager = null;
                        Database database = null;
                        try {
                            manager = new Manager(new AndroidContext(this), Manager.DEFAULT_OPTIONS);
                            database = manager.getDatabase(DB_NAME);
                            database.addChangeListener(this);
                            startSync(database);

                        } catch (Exception e) {
                            Log.e(TAG, "Error getting database", e);
                            return;
                        }

                    }
这是startSync()函数

但我的日志如下所示: 我对在android应用程序中使用url感到困惑

    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest: io exception.  url: http://10.0.2.2:4984/firstdb/_local/2b7e37db76812fef1b8c7ca3d4b30b99e570ea6f
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest: org.apache.http.conn.ConnectTimeoutException: Connect to /10.0.2.2:4984 timed out
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at com.couchbase.lite.support.RemoteRequest.executeRequest(RemoteRequest.java:184)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at com.couchbase.lite.support.RemoteRequest.run(RemoteRequest.java:103)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:153)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    12-10 02:36:16.930 4556-4588/com.couchbase.examples.couchdbapp E/RemoteRequest:     at java.lang.Thread.run(Thread.java:856)
这些错误发生在我在android设备上运行应用程序时 emulator上的应用程序它没有显示任何错误,但给出了详细的消息

12-10 13:13:03.482 3718-3770/com.couchbase.examples.couchdbapp W/Sync: com.couchbase.lite.replicator.PullerInternal@3139637: Received invalid doc ID from _changes: {seq=1, id=_user/, changes=[{rev=}]}

通过与朋友讨论,我找到了解决上述问题的方法 我刚刚将笔记本电脑和Android手机连接到同一个网络(从localhost访问服务器时这很重要),然后我在startSync()函数中更改了url,如下所示:

192.168.1.17


这是我笔记本电脑的IP地址,4984是在同步网关上监听请求的端口只要对上面的代码做一些简单的更改,你就可以在android应用程序中使用同步网关了

通过与朋友讨论,我得到了上述问题的解决方案 我刚刚将笔记本电脑和Android手机连接到同一个网络(从localhost访问服务器时这很重要),然后我在startSync()函数中更改了url,如下所示:

192.168.1.17


这是我笔记本电脑的IP地址,4984是在同步网关上监听请求的端口。只需对上述代码进行简单更改,您就可以在android应用程序中使用同步网关了。这看起来像是网络问题。根据您运行应用程序的方式,ip 192.168.1.6可能无法访问。例如,如果您在默认模拟器中运行应用程序,主机的ip是10.0.2.2。@LaurentDoguin我没有在emulator中运行我的应用程序,而是在android上运行device@LaurentDoguin我对android应用程序中要使用的url完全感到困惑。如果您的设备在同一个网络上,那么要使用的url将是来自托管同步网关的机器的url。@laurentoguin我试过了工作正常,但如果我想访问另一个网络中的机器同步网关,该怎么办?看起来像是网络问题。根据您运行应用程序的方式,ip 192.168.1.6可能无法访问。例如,如果您在默认模拟器中运行应用程序,主机的ip是10.0.2.2。@LaurentDoguin我没有在emulator中运行我的应用程序,而是在android上运行device@LaurentDoguin我对android应用程序中要使用的url完全感到困惑。如果您的设备在同一个网络上,那么要使用的url将是来自托管同步网关的机器的url。@laurentoguin我试过了工作正常,但如果我想访问另一个网络中的机器同步网关,该怎么办?是的,这与我无法连接时所做的相同。是的,这与我无法连接时所做的相同。
12-10 13:13:03.482 3718-3770/com.couchbase.examples.couchdbapp W/Sync: com.couchbase.lite.replicator.PullerInternal@3139637: Received invalid doc ID from _changes: {seq=1, id=_user/, changes=[{rev=}]}