是否可以在不附加任何侦听器的情况下读取 Firebase 数据?
我正在开发Firebase Android应用程序,需要一种方法来从Firebase读取数据,而无需实际附加任何侦听器。在此特定实例中,我不在乎数据在初始读取后是否发生变化。有没有办法直接访问 ,而无需将 EventListener 附加到 Firebase 引用?或者有没有其他方法可以直接从具有某种等效项的Firebase引用中读取?DataSnapshot
ref.getValue()
谢谢。
我正在开发Firebase Android应用程序,需要一种方法来从Firebase读取数据,而无需实际附加任何侦听器。在此特定实例中,我不在乎数据在初始读取后是否发生变化。有没有办法直接访问 ,而无需将 EventListener 附加到 Firebase 引用?或者有没有其他方法可以直接从具有某种等效项的Firebase引用中读取?DataSnapshot
ref.getValue()
谢谢。
您可以使用 Firebase 的 REST API 来访问“原始”数据。
寄件人: https://www.firebase.com/docs/rest-api.html
您可以将任何 Firebase 网址用作 REST 终端节点。您需要做的就是将“.json”附加到URL的末尾,然后从您喜欢的HTTPS客户端发送请求。请注意,HTTPS 是必需的。Firebase 仅响应加密流量,以便您的数据保持安全。
curl https://SampleChat.firebaseIO-demo.com/users/jack/name.json
成功的请求将由 200 OK HTTP 状态代码指示。响应将包含正在检索的数据:
{"first":"Jack", "last": "Sparrow"}
同一页还提到了一个Java包装器项目:https://github.com/bane73/firebase4j
Java SDK 提供了一个方法,该方法等效于您的 ref.getValue()。它的使用方式与 类似,但只检索单个值。addListenerForSingleValueEvent
addValueEventListener
fb.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snap) {
System.out.println(snap.getName() + " -> " + snap.getValue());
}
@Override public void onCancelled() { }
});
正如 Frank 所提到的,REST API 也是一个不错的选择。