【问题标题】:Java send data issue with Firebase Realtime Database using REST APIJava 使用 REST API 与 Firebase 实时数据库发送数据问题
【发布时间】:2018-02-23 07:48:09
【问题描述】:

我正在尝试使用以下 JAVA 代码通过 REST API 将一些数据发送到 Firebase 实时数据库。

public void doWork() {
        consumer.subscribe(Collections.singletonList(this.topic));
        ConsumerRecords<String, String> records = consumer.poll(1000);
        for (ConsumerRecord<String, String> record : records) {
            System.out.println("Sending data: " + record.value() );

            //  https://testiosproject-6054a.firebaseio.com/users.json
         // 1. URL
            URL url;
            try {
                url = new URL("https://testiosproject-1234a.firebaseio.com/users.json");

                // 2. Open connection
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();              
                conn.setDoOutput(true);
                // 3. Specify POST method
                conn.setRequestMethod("POST");
                conn.setRequestProperty("Content-Type", "application/json");
                conn.setRequestProperty("Accept", "application/json");
                conn.connect();

                // Write data
                OutputStream os = conn.getOutputStream();
                OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
                osw.write(record.value());
                osw.flush();
                osw.close();

            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

以下是尝试发送的数据:

Sending data: {"UserID":"101","UserAddress":"XYZ","UserAccount":"987","UserName":"Stella"}

但是,我没有在 Firebase 实时数据库控制台上收到这些数据。我不确定这个问题的原因是什么?

我尝试了 Postman 客户端,并尝试了相同的 URL 和数据,它工作正常。

有人可以指导我解决这个问题吗?

【问题讨论】:

  • 您是否得到响应,只是无法在 firebase 上存储数据。?
  • 如何查看响应?我没听懂。
  • 您说,这是您要发送的数据Received message: {"UserID":"101","UserAddress":"XYZ","UserAccount":"987","UserName":"Stella"}。您如何尝试发送这些数据?请分享代码。
  • 我通过添加 osw.write(record.value().toString()); 修复它
  • 如果它解决了你的问题,你可以回答你自己的问题。 :)

标签: java firebase firebase-realtime-database


【解决方案1】:

我会选择一个库来抽象其中的一些内容,例如 CXF(用于实际的 HTTP 内容)和 Jackson(用于 JSON 处理)。代码会更简单:

WebClient client = WebClient.create("https://testiosproject-1234a.firebaseio.com");
client.path("users.json");
client.type(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON)
Response r = client.post(record);
MyResponseClassIfAny b = r.readEntity(MyResponseClassIfAny .class);

改编自CXF Documentation

请注意,大多数 WebClient 设置代码可以(并且可能应该)在 fr 循环之外完成,因为它永远不会改变。

【讨论】:

  • 请注意,基于 Firebase 的 POST documentation,它确实会返回一个值,无论您是否想要/需要它都取决于您。
猜你喜欢
  • 2019-01-19
  • 2021-10-23
  • 2021-11-21
  • 1970-01-01
  • 2019-12-21
  • 2023-03-06
  • 1970-01-01
  • 2020-10-14
  • 2018-08-15
相关资源
最近更新 更多