我有以下結構:火力地堡數據庫REST獲取與排序依據的價值和equalTo
- 移動客戶端連接到谷歌App Engine應用程序(JAVA)
- GAE使得會從火力地堡數據庫中的一些信息與REST調用
由於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"'
但使用HttpURLConnection類或URLFetchService從Java代碼在我的GAE應用程序做的正是同樣的要求時,我收到奇怪的錯誤。起初那些被URL編碼錯誤,所以我有我的網址更改爲這樣的事情:
https://my_project.firebaseio.com/items.json?orderBy=%22%24value%22&equalTo=%22some_string%22
但即使在那之後我收到400個錯誤代碼有以下消息:
{ 「錯誤」: 「當其他查詢參數被定義ORDERBY必須定義」}
我的請求的代碼看起來是這樣的:
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";
任何想法我做錯了什麼?
請添加聲明並初始化'urlString'的Java代碼。 –
@FrankvanPuffelen在說明中添加了。我只是將字符串分配給它以確保字符串中沒有錯誤。 –