0


私はfirebaseを初めて使用し、プロジェクトにfirebaseを追加したいと考えています。プロジェクトに関連する機能をテストするために、Java コードを書きました。REST put データについてです。私の問題は、データを配置するたびに新しい接続を作成すると、firebase のデータが変更され、バインドされた関数がトリガーされることです。接続を 1 回だけ作成し、この接続を使用してデータを firebase に書き込むと、バインドされた関数は 1 回だけトリガーされます (接続が開かれた直後の最初のデータ)。問題は、配置するデータが大量にあり、毎回接続を新規作成/開くとパフォーマンスが低下することです。この問題を解決する方法はありますか? または、問題ではないかもしれませんが、私がしたことは正しくありませんでした。任意の提案をいただければ幸いです。ありがとう。コードは次のとおりです。

    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 リクエストを送信しています。

書き込むデータごとに 1 つの HTTP リクエストを送信する必要があります。これは、TCP 接続を再確立する必要があるという意味ではありません。これは単に、データの新しいブロブを使用して新しい HTTP リクエストを作成して送信する必要があることを意味します。

また、既存のデータを上書きしないように、リクエストごとに異なる URL に書き込む (または POST を使用する) ことをお勧めします。

于 2013-06-02T19:11:12.593 に答える