2016-02-05 123 views
0

我需要能够将一些数据更新到firebase,而无需将firebase设置为联机,这样只有指定的数据被发送,而没有wifi可用。我一直无法找到关于如何在Java中使用REST API的任何文档或指南。有人可以帮我吗?如何在Java中使用Firebase REST API?

回答

4

不幸的是,现在还没有适用于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是火力地堡url和credentials是在管理控制台中生成的密钥。