繁体   English   中英

Android + Cloudant + CouchBase =错误404

[英]Android + Cloudant + CouchBase = error 404

我正在Android上使用CouchBase Lite,并想连接到Cloudant上的在线数据库。 我有一些代码,但无法正常工作:

public class MainActivity extends ActionBarActivity {
final String TAG = "CouchBase";
Manager manager;
String dbname = "foimess";
Database database;
URL syncUrl;
public static final String SYNC_URL = "https://drmenko.cloudant.com/";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    try {
        manager = new Manager(new AndroidContext(this), Manager.DEFAULT_OPTIONS);
        Log.d (TAG, "Manager created");
    } catch (IOException e) {
        Log.e(TAG, "Cannot create manager object");
        return;
    }

    if (!Manager.isValidDatabaseName(dbname)) {
        Log.e(TAG, "Bad database name");
        return;
    }

    try {
        database = manager.getDatabase(dbname);
        Log.d (TAG, "Database created");
    } catch (CouchbaseLiteException e) {
        Log.e(TAG, "Cannot get database");
        return;
    }

        try {
            syncUrl = new URL(SYNC_URL + dbname);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Replication push = database.createPushReplication(syncUrl);
        Replication pull = database.createPullReplication(syncUrl);
        pull.setContinuous(true);
        push.setContinuous(true);
        com.couchbase.lite.auth.Authenticator auth = new BasicAuthenticator("user", "pass");
        push.setAuthenticator(auth);
        pull.setAuthenticator(auth);

        push.addChangeListener(new Replication.ChangeListener() {
            @Override
            public void changed(Replication.ChangeEvent event) {
                // will be called back when the push replication status changes
            }
        });
        pull.addChangeListener(new Replication.ChangeListener() {
            @Override
            public void changed(Replication.ChangeEvent event) {
                // will be called back when the pull replication status changes
            }
        });
        push.start();
        pull.start();


}

我在LogCat中收到此消息:

01-10 20:06:15.202: E/RemoteRequest(25122): Got error status: 404 for https://drmenko.cloudant.com/foimess/_session.  Reason: Object Not Found
01-10 20:06:15.202: D/Sync(25122): %s: return false
01-10 20:06:15.202: E/RemoteRequest(25122): Got error status: 404 for https://drmenko.cloudant.com/foimess/_session.  Reason: Object Not Found
01-10 20:06:15.202: D/Sync(25122): %s: return false
01-10 20:06:15.312: D/dalvikvm(25122): GC_CONCURRENT freed 304K, 6% free 7331K/7751K, paused 14ms+5ms, total 78ms
01-10 20:06:15.902: E/RemoteRequest(25122): Got error status: 404 for https://drmenko.cloudant.com/foimess_session.  Reason: Object Not Found
01-10 20:06:15.902: D/Sync(25122): %s: return false
01-10 20:06:15.902: E/Sync(25122): com.couchbase.lite.replicator.ReplicationInternal$4@4134fd08: Session check failed
01-10 20:06:15.902: E/Sync(25122): org.apache.http.client.HttpResponseException: Object Not Found
01-10 20:06:15.902: E/Sync(25122):  at com.couchbase.lite.support.RemoteRequest.executeRequest(RemoteRequest.java:217)
01-10 20:06:15.902: E/Sync(25122):  at com.couchbase.lite.support.RemoteRequest.run(RemoteRequest.java:101)
01-10 20:06:15.902: E/Sync(25122):  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
01-10 20:06:15.902: E/Sync(25122):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-10 20:06:15.902: E/Sync(25122):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-10 20:06:15.902: E/Sync(25122):  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:150)
01-10 20:06:15.902: E/Sync(25122):  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:264)
01-10 20:06:15.902: E/Sync(25122):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-10 20:06:15.902: E/Sync(25122):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-10 20:06:15.902: E/Sync(25122):  at java.lang.Thread.run(Thread.java:856)
01-10 20:06:15.902: E/Sync(25122): com.couchbase.lite.replicator.PusherInternal@412601b0: Progress: set error = org.apache.http.client.HttpResponseException: Object Not Found
01-10 20:06:15.902: E/RemoteRequest(25122): Got error status: 404 for https://drmenko.cloudant.com/foimess_session.  Reason: Object Not Found
01-10 20:06:15.902: D/Sync(25122): %s: return false
01-10 20:06:15.912: E/Sync(25122): com.couchbase.lite.replicator.ReplicationInternal$4@41334288: Session check failed
01-10 20:06:15.912: E/Sync(25122): org.apache.http.client.HttpResponseException: Object Not Found
01-10 20:06:15.912: E/Sync(25122):  at com.couchbase.lite.support.RemoteRequest.executeRequest(RemoteRequest.java:217)
01-10 20:06:15.912: E/Sync(25122):  at com.couchbase.lite.support.RemoteRequest.run(RemoteRequest.java:101)
01-10 20:06:15.912: E/Sync(25122):  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
01-10 20:06:15.912: E/Sync(25122):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-10 20:06:15.912: E/Sync(25122):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-10 20:06:15.912: E/Sync(25122):  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:150)
01-10 20:06:15.912: E/Sync(25122):  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:264)
01-10 20:06:15.912: E/Sync(25122):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-10 20:06:15.912: E/Sync(25122):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-10 20:06:15.912: E/Sync(25122):  at java.lang.Thread.run(Thread.java:856)
01-10 20:06:15.912: E/Sync(25122): com.couchbase.lite.replicator.PullerInternal@41298e18: Progress: set error = org.apache.http.client.HttpResponseException: Object Not Found
01-10 20:12:52.262: E/ActivityThread(25122): Activity com.goran.helloworldcouchbase.MainActivity has leaked IntentReceiver com.couchbase.lite.android.AndroidNetworkReachabilityManager$ConnectivityBroadcastReceiver@    41335210 that was originally registered here. Are you missing a call to unregisterReceiver()?
01-10 20:12:52.262: E/ActivityThread(25122): android.app.IntentReceiverLeaked: Activity com.goran.helloworldcouchbase.MainActivity has leaked IntentReceiver com.couchbase.lite.android.AndroidNetworkReachabilityManager$ConnectivityBroadcastReceiver@    41335210 that was originally registered here. Are you missing a call to unregisterReceiver()?
01-10 20:12:52.262: E/ActivityThread(25122):    at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:792)
01-10 20:12:52.262: E/ActivityThread(25122):    at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:593)
01-10 20:12:52.262: E/ActivityThread(25122):    at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1120)
01-10 20:12:52.262: E/ActivityThread(25122):    at android.app.ContextImpl.registerReceiver(ContextImpl.java:1107)
01-10 20:12:52.262: E/ActivityThread(25122):    at android.app.ContextImpl.registerReceiver(ContextImpl.java:1101)
01-10 20:12:52.262: E/ActivityThread(25122):    at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:365)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.couchbase.lite.android.AndroidNetworkReachabilityManager.startListening(AndroidNetworkReachabilityManager.java:50)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.couchbase.lite.NetworkReachabilityManager.addNetworkReachabilityListener(NetworkReachabilityManager.java:26)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.couchbase.lite.replicator.ReplicationInternal.initNetworkReachabilityManager(ReplicationInternal.java:299)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.couchbase.lite.replicator.ReplicationInternal.start(ReplicationInternal.java:239)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.couchbase.lite.replicator.ReplicationInternal$11.doIt(ReplicationInternal.java:1037)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.couchbase.lite.replicator.ReplicationInternal$11.doIt(ReplicationInternal.java:1033)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.github.oxo42.stateless4j.StateConfiguration$3.doIt(StateConfiguration.java:135)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.github.oxo42.stateless4j.StateConfiguration$3.doIt(StateConfiguration.java:133)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.github.oxo42.stateless4j.StateRepresentation.executeEntryActions(StateRepresentation.java:118)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.github.oxo42.stateless4j.StateRepresentation.enter(StateRepresentation.java:97)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.github.oxo42.stateless4j.StateMachine.publicFire(StateMachine.java:199)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.github.oxo42.stateless4j.StateMachine.fire(StateMachine.java:126)
01-10 20:12:52.262: E/ActivityThread(25122):    at com.couchbase.lite.replicator.ReplicationInternal$1.run(ReplicationInternal.java:191)
01-10 20:12:52.262: E/ActivityThread(25122):    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
01-10 20:12:52.262: E/ActivityThread(25122):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-10 20:12:52.262: E/ActivityThread(25122):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-10 20:12:52.262: E/ActivityThread(25122):    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:150)
01-10 20:12:52.262: E/ActivityThread(25122):    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:264)
01-10 20:12:52.262: E/ActivityThread(25122):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-10 20:12:52.262: E/ActivityThread(25122):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-10 20:12:52.262: E/ActivityThread(25122):    at java.lang.Thread.run(Thread.java:856)

我究竟做错了什么? 我在代码中或服务器上缺少某些内容吗?

404的第一个URL https://drmenko.cloudant.com/foimess/_session不正确-它应该是https://drmenko.cloudant.com/_session 这可能意味着没有进一步的请求被正确认证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM