的Android Couchbase SyncGateway饼干
问题描述:
萨拉姆
我这样做对能够在Android项目的cookie,但在同步网关对数收益:的Android Couchbase SyncGateway饼干
401 login required
session_id("6e2b5106712c0aa3e0048c5b724b302df63d5fbf") is valid for 20 year
couchbase server is in another local pc(192.168.137.137)
try {
syncUrl = new URL("http://192.168.137.137:4984/test");
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
boolean isSecure = false;
boolean httpOnly = false;
Replication pullReplication = database.createPullReplication(syncUrl);
pullReplication.setContinuous(true);
pullReplication.setCookie("SyncGatewaySession",
"6e2b5106712c0aa3e0048c5b724b302df63d5fbf",
null, 4125798350463L, isSecure, httpOnly);
Replication pushReplication = database.createPushReplication(syncUrl);
pushReplication.setContinuous(true);
pushReplication.setCookie("SyncGatewaySession",
"6e2b5106712c0aa3e0048c5b724b302df63d5fbf",
null, 4125798350463L, isSecure, httpOnly);
pullReplication.start();
pushReplication.start();
pullReplication.addChangeListener(this);
pushReplication.addChangeListener(this);
答
问题就迎刃而解了:
try {
syncUrl = new URL("http://192.168.137.137:4984/test");
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
Replication pullReplication = database.createPullReplication(syncUrl);
pullReplication.setContinuous(true);
Replication pushReplication = database.createPushReplication(syncUrl);
pushReplication.setContinuous(true);
Authenticator auth = new BasicAuthenticator(username, password);
pushReplication.setAuthenticator(auth);
pullReplication.setAuthenticator(auth);
pullReplication.start();
pushReplication.start();
pullReplication.addChangeListener(this);
pushReplication.addChangeListener(this);
答
如果你想使用提供的会话ID该cookie,你可以做这样的:
Map<String, String> session = new HashMap<String, String>();
session.put("session_id", "904ac010862f37c8dd99015a33ab5a3565fd8447");
session.put("expires", "2015-09-23T17:27:17.555065803+01:00");
session.put("cookie_name", "SyncGatewaySession");
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = null;
try {
date = formatter.parse(session.get("expires"));
} catch (ParseException e) {
e.printStackTrace();
}
Replication pull = database.createPullReplication(syncGatewayURL);
pull.setCookie(session.get("cookie_name"), session.get("session_id"), "/", date, false, false);
pull.start();
所以不需要身份验证cookie?我们可以不使用cookie同步吗? – kirtan403