2016-02-05 124 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是在管理控制檯中生成的密鑰。