【发布时间】:2016-02-05 16:08:19
【问题描述】:
我需要能够在不将 firebase 设置为在线的情况下将一些数据更新到 firebase,以便在没有 wifi 可用的情况下仅发送指定的数据。我一直找不到任何关于如何在 Java 中使用 REST API 的文档或指南。有人可以帮我吗?
【问题讨论】:
标签: java android rest firebase
我需要能够在不将 firebase 设置为在线的情况下将一些数据更新到 firebase,以便在没有 wifi 可用的情况下仅发送指定的数据。我一直找不到任何关于如何在 Java 中使用 REST API 的文档或指南。有人可以帮我吗?
【问题讨论】:
标签: java android rest firebase
不幸的是,目前还没有适用于 Firebase REST 接口的 Java SDK(我可以找到)。相反,您需要使用您选择的 HTTP 客户端创建一个。
这是一个使用泽西岛的例子:
import javax.ws.rs.core.MediaType;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientHandlerException;
import com.sun.jersey.api.client.UniformInterfaceException;
import com.vnomicscorp.firebase.sdk.FirebaseSdk;
import com.vnomicscorp.firebase.sdk.FirebaseSdkException;
public class FirebaseSdkJersey {
private static final String DEFAULT_AUTH_PARAM_NAME = "auth";
private static final String DEFAULT_PATH_FORMAT = "%s.json";
private final String credentials;
private final String url;
private final Client client;
private String authParamName = DEFAULT_AUTH_PARAM_NAME;
private String pathFormat = DEFAULT_PATH_FORMAT;
public FirebaseSdkJersey(String url, String credentials, Client client) {
this.url = url;
this.credentials = credentials;
this.client = client;
}
public void setValue(String path, String value) throws Exception {
client.resource(url).path(String.format(pathFormat, path))
.queryParam(authParamName, credentials)
.type(MediaType.APPLICATION_JSON).entity(value)
.put(String.class);
}
public String getValue(String path) throws Exception {
return client.resource(url).path(String.format(pathFormat, path))
.queryParam(authParamName, credentials).get(String.class);
}
public void deleteValue(String path) throws Exception {
client.resource(url).path(String.format(pathFormat, path))
.queryParam(authParamName, credentials).delete(String.class);
}
}
需要以下依赖
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19</version>
</dependency>
结构如下:
Client client = Client.create();
sdk = new FirebaseSdkJersey(url, credentials, client);
url 是 Firebase 网址,credentials 是在管理控制台中生成的密钥。
【讨论】: