如何在 CouchDB 中创建一个包含用户名和密码的数据库
我正在创建一个在 CouchDB 中存储数据的 Android 应用程序,并且我需要从 Android 应用程序创建一个数据库。我需要执行命令“curl-X PUT http://user:[email protected]:5984/myDataBase”使用java方法。
我已经实现了以下功能:
public static boolean createDatabase(String hostUrl, String databaseName) {
try {
HttpPut httpPutRequest = new HttpPut(hostUrl + databaseName);
JSONObject jsonResult = sendCouchRequest(httpPutRequest);
return jsonResult.getBoolean("ok");
}
catch (Exception e) {
e.printStackTrace();
}
return false;
}
private static JSONObject sendCouchRequest(HttpUriRequest request) {
try {
HttpResponse httpResponse = (HttpResponse) new DefaultHttpClient().execute(request);
HttpEntity entity = httpResponse.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
String resultString = convertStreamToString(instream);
instream.close();
JSONObject jsonResult = new JSONObject(resultString);
return jsonResult;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
我通过以下方式调用该函数:
createDatabase("http://user:[email protected]/","myDataBase");
但没有结果。我认为问题出在 user:passwd 中,因为在“管理方”模式下,该功能可以正常调用:
createDatabase("http://127.0.0.1/","myDataBase");
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我也遇到了同样的问题 ->您必须在标头中使用 HTTP 身份验证。
因此,只需将此标题行添加到您的请求中:
请记住,您必须使用 base64 对短语“用户名:密码”进行编码。
这看起来像这样:
I had the same problem -> you have to use the HTTP Authentication in the header.
So just add this header lines to your request:
keep in mind that you have to encode the phrase "username:password" with base64.
this looks something like this:
您可以查看这篇关于 libcouch-android 的博文。它有一些很好的功能,真正支持使用 CouchDB 进行 Android 开发。例如,自动为应用程序创建数据库和密码,以便用户可以透明地使用 CouchDB(如果需要)。
此外,它还提供对 CouchDB 的 RPC 方法的访问,因此您可以在应用程序的生命周期中启动和停止数据库。
关于安全性,我刚刚在这个线程中总结了这一点。
You could have a look at this blogpost on libcouch-android. It has some nice features that really support Android development with CouchDB. For example automatically creating databases and passwords for applications, so users have transparent usage of CouchDB (if wanted).
Also, it is offering access to the RPC methods of CouchDB, so you can start and stop the DB from your application's lifecycles.
Regarding security, I just had this summed up here in this thread.