0


我是 firebase 新手,我想将 firebase 添加到我的项目中。我写了一段java代码来测试与我的项目相关的特性。它是关于 REST put 数据的。我的问题是,如果我每次放置数据时都创建新连接,firebase 中的数据会发生变化并触发绑定功能。如果我只创建一次连接,并使用此连接将数据写入 firebase,则绑定功能将仅触发一次(连接打开后立即触发的第一个数据)。问题是要放置很多数据,如果我每次都新建/打开连接,它会降低性能。有没有办法解决这个问题?或者也许这不是问题,但我所做的不正确。任何建议将不胜感激。谢谢。这是代码:

    String httpsURL = "https://xxxx.firebaseio.com/users.json";
    URL myurl = new URL(httpsURL);
    HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection();
    con.setRequestMethod("PUT");
    con.setDoOutput(true);
    con.setDoInput(true);

    DataOutputStream output = new DataOutputStream(con.getOutputStream());  

    JSONObject json = new JSONObject();
    json.put("first", "xxx");
    json.put("last", "yyy");        
    System.out.println(json.toString());
    output.writeBytes(json.toString());
    output.flush();        

    json.put("first", "aaa");
    json.put("last", "bbbb");        
    System.out.println(json.toString());
    output.writeBytes(json.toString());
    output.flush();

    json.put("first", "eee");
    json.put("last", "rrrr");        
    System.out.println(json.toString());
    output.writeBytes(json.toString());
    output.flush();
    input = new DataInputStream( con.getInputStream() );
    for( int c = input.read(); c != -1; c = input.read() )
    System.out.print( (char)c );

    System.out.println("Resp Code:"+con .getResponseCode());
    System.out.println("Resp Message:"+ con .getResponseMessage());
    input.close();
    output.close();
    con.disconnect(); 
4

1 回答 1

0

您正在发送包含多个数据块的单个 HTTP PUT 请求。

您需要为要写入的每条数据发送一个 HTTP 请求。这并不意味着您必须重新建立 TCP 连接。这只是意味着您需要使用新的数据块构造和发送一个新的 HTTP 请求。

您可能还希望为每个请求写入不同的 URL(或使用 POST),以免覆盖现有数据。

于 2013-06-02T19:11:12.593 回答