sha*_*ine 18 java android firebase
我正在使用Firebase Android应用,需要一种从Firebase读取数据的方法,而无需实际附加任何侦听器.如果数据在初始读取后发生变化,我不关心这个特定情况.有没有一种方法可以直接访问a DataSnapshot而不将EventListener附加到Firebase引用?或者是否有其他方法可以直接从Firebase引用中读取某种ref.getValue()等价物?
谢谢.
您可以使用Firebase的REST API来访问"原始"数据.
来自:https://www.firebase.com/docs/rest-api.html
您可以将任何Firebase URL用作REST端点.您需要做的就是将".json"附加到URL的末尾,并从您喜欢的HTTPS客户端发送请求.请注意,HTTPS是必需的.Firebase仅响应加密流量,以确保您的数据安全.
curl https://SampleChat.firebaseIO-demo.com/users/jack/name.json
Run Code Online (Sandbox Code Playgroud)
成功的请求将由200 OK HTTP状态代码指示.响应将包含要检索的数据:
{"first":"Jack", "last": "Sparrow"}
Run Code Online (Sandbox Code Playgroud)
同一页面还提到了一个Java包装器项目:https://github.com/bane73/firebase4j
在Java SDK中提供了一个addListenerForSingleValueEvent方法,这相当于你ref.getValue().它被用作addValueEventListener,但只检索单个值.
fb.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snap) {
System.out.println(snap.getName() + " -> " + snap.getValue());
}
@Override public void onCancelled() { }
});
Run Code Online (Sandbox Code Playgroud)
正如Frank所提到的,REST API也是一个很好的选择.