You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何不依赖Firebase SDK,通过Volley/OkHttp存数据到实时数据库?

不用Firebase SDK操作Firebase实时数据库的可行方案

明确说明:Firebase实时数据库提供REST API,完全可以不用官方SDK,通过OkHttp/Volley这类HTTP库直接调用接口实现数据存储。你的代码失败主要是请求格式和配置问题,下面是修正方案和核心注意事项:

1. 修正请求数据格式

Firebase实时数据库仅接受JSON格式的请求体,你当前使用的FormBody是表单编码格式,不符合接口要求,需改用JSON请求体:

OkHttp 修正代码

OkHttpClient client = new OkHttpClient();

// 构造JSON格式的请求内容
String jsonBody = "{\"message\": \"Your message\"}";
RequestBody requestBody = RequestBody.create(jsonBody, MediaType.get("application/json; charset=utf-8"));

Request request = new Request.Builder()
        .url("https://jukes-86dd2-default-rtdb.firebaseio.com/Bangla.json") // 注意URL结尾是.json,而非/Bangla/json
        .put(requestBody)
        .build();

try {
    Response response = client.newCall(request).execute();
    if (response.isSuccessful()) {
        // 写入成功,可处理返回的节点信息
        String responseContent = response.body().string();
        Log.d("Firebase", "写入成功: " + responseContent);
    } else {
        // 写入失败,打印状态码和错误信息
        Log.e("Firebase", "写入失败: " + response.code() + " " + response.message());
    }
} catch (IOException e) {
    e.printStackTrace();
}

2. 规范URL格式

Firebase REST API的URL需遵循以下规则:

  • 节点路径必须以.json结尾,例如操作Bangla节点的正确URL是https://<你的数据库ID>.firebaseio.com/Bangla.json
  • 若要自动生成唯一ID的新节点,改用POST请求,URL保持节点的.json路径即可,Firebase会自动生成类似-Nxxxx的节点ID
  • 若要覆盖指定子节点,用PUT请求并指定到具体子节点路径,比如https://.../Bangla/message.json会直接覆盖Bangla下的message字段

3. 数据库权限配置

默认情况下,Firebase实时数据库的规则禁止未授权写入,你需要在Firebase控制台的「实时数据库」→「规则」中调整权限(测试阶段可临时开放,上线后务必配置安全规则):

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

4. Volley 实现示例(可选)

如果想用Volley实现,同样要发送JSON格式请求:

String url = "https://jukes-86dd2-default-rtdb.firebaseio.com/Bangla.json";
String jsonBody = "{\"message\": \"Your message via Volley\"}";

JsonObjectRequest request = new JsonObjectRequest(
        Request.Method.PUT,
        url,
        new JSONObject(jsonBody),
        response -> Log.d("FirebaseVolley", "写入成功: " + response.toString()),
        error -> Log.e("FirebaseVolley", "写入失败: " + error.getMessage())
);

// 将请求加入Volley队列
Volley.newRequestQueue(this).add(request);

核心注意事项

  • 所有请求必须使用HTTPS,Firebase不支持HTTP请求
  • 若数据库需要身份验证,需在请求头中添加Authorization字段,值为Bearer <用户ID令牌>,可通过Firebase身份验证REST API获取令牌
  • 处理响应时务必检查请求是否成功,避免忽略错误状态码导致问题排查困难

内容的提问来源于stack exchange,提问作者Abu Hanif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:10:58