gpt4 book ai didi

java - Firebase 数据库 REST 获取 orderBy 值和 equalTo

转载 作者:搜寻专家 更新时间:2023-10-31 20:32:27 25 4
gpt4 key购买 nike

我有以下架构:

  • 连接到 Google App Engine 应用程序 (Java) 的移动客户端
  • GAE 通过 REST 调用从 Firebase 数据库获取一些信息

由于后台线程,Firebase Admin SDK 不能很好地与 GAE 配合使用,因此我决定使用 Firebase REST API。当我更新 Firebase 数据库或从特定路径获取某些内容时一切顺利,但当我想过滤数据时遇到问题。

当发出 cUrl 请求时一切正常:

curl -X GET \
-H 'Authorization: Bearer auth_token' \
'https://my_project.firebaseio.com/items.json?orderBy="$value"&equalTo="some_string"'

但是当在我的 GAE 应用程序中使用来自 java 代码的 HttpURLConnection 或 URLFetchService 执行完全相同的请求时,我收到奇怪的错误。起初那些是 urlencoding 错误,所以我不得不将我的 url 更改为这样的东西:

https://my_project.firebaseio.com/items.json?orderBy=%22%24value%22&equalTo=%22some_string%22

但即使在那之后我仍会收到 400 错误代码和以下消息:

{ "error" : "orderBy must be defined when other query parameters are defined" }

我的请求代码如下所示:

URL url = URL(urlString);
HTTPRequest request = HTTPRequest(url, HTTPMethod.GET, opts)
request.addHeader(HTTPHeader(AUTH_HEADER, "Bearer " + accessToken));
HTTPResponse responseRaw = service.fetch(request);

我尝试使用不同的值作为 urlString(简单地将字符串分配给变量)但没有成功:

String urlString = "https://my_project.firebaseio.com/items.json?orderBy=%22%24value%22&equalTo=%22some_string%22";

String urlString = "https://my_project.firebaseio.com/items.json?orderBy=%22$value%22&equalTo=%22some_string%22";

String urlString = "https://my_project.firebaseio.com/items.json?orderBy=\"$value\"&equalTo=\"some_string\"";

第三个值导致异常,没有发送请求。更重要的是删除 equalTo 参数使请求工作,我得到 200 和 json 作为响应:

String urlString = "https://my_project.firebaseio.com/items.json?orderBy=%22$value%22";

知道我做错了什么吗?

最佳答案

很难找到,但我设置了一个代理来查看来自本地应用引擎服务器的传出请求,它显示了一些导致问题的无宽度空格 unicode 字符。

orderBy\u200c\u200b=

删除这两个字符后,一切正常。

关于java - Firebase 数据库 REST 获取 orderBy 值和 equalTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com