java - CouchDB 对 curl 和 Java 程序的处理方式不同
问题描述
这个问题可能有点幼稚……
我编写了一个小的 Java 程序,它应该查询一个 CouchDB 实例。但是,CouchDB 不断返回我的用户未获得授权。使用与 curl 相同的 URL 是可行的。
Java 代码:
HttpGet request = new HttpGet("http://admin:PASSWORD@localhost:5984/ecm_ng_nonpart/_security");
request.addHeader("accept", "application/xml");
try {
System.out.println("Executing request " + request.getMethod() + " " + request.getUri());
ClassicHttpResponse resp = httpClient.execute(request);
BufferedReader br = new BufferedReader(new InputStreamReader(resp.getEntity().getContent()));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
响应:
{"error":"unauthorized","reason":"You are not authorized to access this db."}
卷曲输出:
C:\Users\joche>curl -X GET http://admin:PASSWORD@localhost:5984/ecm_ng_nonpart/_security
{"members":{"roles":["_admin"],"names":["ecmnp","admin"]},"admins":{"roles":["_admin"],"names":["admin"]}}
知道我做错了什么吗?
解决方案
使用与 curl 相同的 URL 是可行的。
您发布的信息不支持这种说法。在这两种情况下,您的 URL 是不同的。
Java:_会话
HttpGet request = new HttpGet("http://admin:PASSWORD@localhost:5984/ecm_ng_nonpart/_sessions");
卷曲:_安全。
curl -X GET http://admin:PASSWORD@localhost:5984/ecm_ng_nonpart/_security
推荐阅读
- asp.net - ASP.NET/SQL 没有从数据库中检索正确的值
- python - 如何在 Flask 服务器中运行 React javascript?
- android - 是否可以在 Java 模块中使用 Android 框架?
- javafx-2 - 在 javafx 的 ComboBox.setConverter 中使用 FormatStringConverter 的问题
- angular - 离子相机预览不可见
- r - 使用 R:当它们包含某些值时,如何删除行?
- arduino - (Serial.available() > 0) 等待用户输入
- jquery - 单击后关闭悬停子菜单而不刷新页面
- json - 将来自 solr 的 json 日期转换为实际日期 (yyyy/mm/dd)
- sql-server - 合并语句以在 Sql Server 中删除/更新/插入数据