Android Couchbase SyncGateway Cookie
Android Couchbase SyncGateway Cookie
萨拉姆
我这样做是为了在 android 项目中启用 cookie,但在同步网关日志中 return :
401 login required
session_id("6e2b5106712c0aa3e0048c5b724b302df63d5fbf") 有效期为20年<br>
couchbase 服务器在另一台本地 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);
如果您想使用 cookie 中提供的会话 ID,您可以这样做:
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();
萨拉姆
我这样做是为了在 android 项目中启用 cookie,但在同步网关日志中 return :
401 login required
session_id("6e2b5106712c0aa3e0048c5b724b302df63d5fbf") 有效期为20年<br>
couchbase 服务器在另一台本地 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);
如果您想使用 cookie 中提供的会话 ID,您可以这样做:
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();