問題: プッシュ中に、肯定的な応答が得られたにもかかわらず、「Bad Request」エラーとある種の認証エラーが発生します。
私は CouchDB や Couchbase の経験がほとんどありませんが、私が理解していることから、通常は Couchbase-Lite を Couchbase Sync Gateway と同期しますが、後者は CouchDB のレプリケーション プロトコルを使用するため、"チャンネル」。CouchDB を使用したレプリケーションについては、こちらで説明しています。Couchbase Sync と Couchbase Server を使用したくないのは、これは今のところ小さな実験プロジェクトであり、チャネルは必要なく、サーバーには十分なリソースがありません。
私はCBL-Android 0.0.0-501(現在の最新のもので、すでに1.0.3を試したと思います)とCouchDB 1.5.0を使用しています。
これは、Android でのメイン アクティビティの onCreate メソッドで呼び出されます。
void minimalPushTest() throws IOException, CouchbaseLiteException {
String databaseName = "cblpushtest";
String couchDbUrl = "http://192.168.4.11:5984";
String userName = "testuser";
String userPw = "testpw";
// initialize database
Manager manager = new Manager(new AndroidContext(this), Manager.DEFAULT_OPTIONS);
Database database = manager.getDatabase(databaseName);
Document document = database.createDocument();
Map<String, Object> data = new HashMap<String, Object>();
data.put("somekey", "sometext");
document.putProperties(data);
// start push replication
Replication replication = database.createPushReplication(new URL(couchDbUrl));
replication.setContinuous(false);
replication.setAuthenticator(new BasicAuthenticator(userName, userPw));
replication.start();
}
これは、ユーザー "testuser" の "/_session" について CouchDB が言っていることです。
{"ok":true,"name":"testuser","roles":["testing"]}
...そして「/cblpushtest/_security」の場合:
{"admins":{"names":[],"roles":[]},"members":{"names":["testuser"],"roles":["testing"]}}
Android Studio での logcat 出力は次のとおりです。
03-15 23:15:14.999 27429-27429/ W/Sync﹕ [fireTrigger()] => START
03-15 23:15:15.109 27429-27429/ W/Sync﹕ [fireTrigger()] => GO_ONLINE
03-15 23:15:15.199 27429-27546/ E/Sync﹕ com.couchbase.lite.replicator.ReplicationInternal$4@429cbb20 checkSessionAtPath() response: {ok=true, userCtx={name=testuser, roles=[testing]}, info={authentication_db=_users, authentication_handlers=[oauth, cookie, default], authenticated=default}}
03-15 23:15:15.309 27429-27546/ W/Sync﹕ com.couchbase.lite.replicator.ReplicationInternal$9@4291cab0: error getting remote checkpoint
03-15 23:15:15.309 27429-27546/ E/Sync﹕ com.couchbase.lite.replicator.PusherInternal@429c1758: Progress: set error = org.apache.http.client.HttpResponseException: Bad Request
03-15 23:15:15.309 27429-27546/ W/Sync﹕ [fireTrigger()] => STOP_GRACEFUL
03-15 23:15:15.314 27429-27562/ W/Sync﹕ [fireTrigger()] => WAITING_FOR_CHANGES
03-15 23:15:15.314 27429-27562/ W/Sync﹕ [fireTrigger()] => STOP_IMMEDIATE
どういうわけか「ok=true」の応答がエラーとして表示されます。
そして、これはcouch.logです(クロックは同期していないようですが、これらは関連する出力です):
[Sun, 15 Mar 2015 22:14:32 GMT] [info] [<0.29026.2>] 192.168.4.61 - - GET /_session 200
[Sun, 15 Mar 2015 22:14:32 GMT] [info] [<0.29024.2>] 192.168.4.61 - - GET /_local/3e7d908842481392245906438560f235e9d3138f 400