Mam następującą strukturę:Firebase REST Database dostać o wartości orderby i equalTo
- mobilny klient podłączania do Google App App Engine (Java)
- GAE czyni ją trochę informacji z Firebase Database z zaproszenia REST
Ponieważ pakiet SDK Firebase Admin nie działa dobrze z GAE z powodu wątków w tle, postanowiłem użyć interfejsu REST API Firebase. Wszystko działa poprawnie, gdy aktualizuję Bazę danych Firebase lub otrzymuję coś z określonej ścieżki, ale kiedy chcę filtrować dane, napotykam problem.
Dokonując Curl żądania wszystko działa świetnie:
curl -X GET \
-H 'Authorization: Bearer auth_token' \
'https://my_project.firebaseio.com/items.json?orderBy="$value"&equalTo="some_string"'
Ale kiedy robi dokładnie to samo żądanie przy użyciu HttpURLConnection lub URLFetchService z kodu Java w mojej aplikacji GAE otrzymuję dziwne błędy. Początkowo te zostały urlencoding błędy, więc musiałem zmienić adres URL, aby coś takiego:
https://my_project.firebaseio.com/items.json?orderBy=%22%24value%22&equalTo=%22some_string%22
Ale nawet po tym, że otrzymam 400 kody błędów z następującym komunikatem:
{ "błąd": "orderby muszą być zdefiniowane, gdy inne parametry zapytań są zdefiniowane" }
Mój kod prośba wygląda następująco:
URL url = URL(urlString);
HTTPRequest request = HTTPRequest(url, HTTPMethod.GET, opts)
request.addHeader(HTTPHeader(AUTH_HEADER, "Bearer " + accessToken));
HTTPResponse responseRaw = service.fetch(request);
Próbowałem używać różnych wartości jako urlString (po prostu przypisanie znaków do zmiennej), aby nie Vail:
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\"";
Trzecia wartość spowodował wyjątek i żadne żądanie nie zostało wysłane. Co więcej usuwając parametr equalTo sprawia, że praca żądania, mam 200 i JSON w odpowiedzi:
String urlString = "https://my_project.firebaseio.com/items.json?orderBy=%22$value%22";
Każdy pomysł co robię źle?
Proszę dodać kod Java, który deklaruje i zainicjował 'urlString'. –
@FrankvanPuffelen dodane w opisie. Po prostu przypisałem do niego ciąg znaków, aby upewnić się, że w ciągu znaków nie ma błędu. –