2017-02-01 15 views
5

Ben şu mimariniz:Firebase Veritabanı DİNLENME orderBy değerle almak ve equalTo

    Google App Engine uygulamasında (Java) GAE'nin yapar
  • REST çağrısı ile Firebase veritabanından bazı bilgi alır bağlanırken
  • mobil istemci

Firebase Admin SDK arka plan iş parçacıkları nedeniyle GAE ile iyi çalışmadığı için Firebase REST API'sini kullanmaya karar verdim. Firebase Veritabanını güncellediğimde veya belirli bir yoldan bir şey aldığımda her şey iyi gider, ancak verileri filtrelemek istediğimde bir sorunla karşılaşırım.

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

Ama GAE'nin app java kodundan HttpURLConnection veya URLFetchService kullanarak tamamen aynı isteği yaparken garip hatalar alırsınız:

bukle istek herşeyi yapma iyi çalışıyor. İlk başta bu hataların URL kodlamasından, bu yüzden böyle bir şey benim url değiştirmek zorunda:

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

Ama aşağıdaki iletiyle 400 hata kodları almak bile bundan sonra:

{ "hata": "diğer sorgu parametreleri tanımlanır zaman orderBy tanımlanmalıdır"}

01 Hiçbir vail için urlString (sadece bir değişkene dize atama) gibi farklı değerler kullanmaya çalıştı
URL url = URL(urlString); 
HTTPRequest request = HTTPRequest(url, HTTPMethod.GET, opts) 
request.addHeader(HTTPHeader(AUTH_HEADER, "Bearer " + accessToken)); 
HTTPResponse responseRaw = service.fetch(request); 

:

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\""; 

üçüncü değer bir duruma neden ve

Benim istek kodu şöyle istek gönderilmedi. Yanlış ne yapıyorum

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

konusunda fikrin: Ne cevap olarak 200 ve json olsun, daha çıkarmadan equalTo parametre isteği iş yapar mı?

+0

Lütfen "urlString" i bildiren ve başlatan Java kodunu ekleyin. –

+0

@FrankvanPuffelen, açıklamaya ekledi. Dizede hiç hata olmadığından emin olmak için ona bir dize atadım. –

cevap

1

Bulmak acı vericiydi, ancak yerel uygulama motoru sunucusundan gelen isteği görmek için bir proxy oluşturdum ve soruna neden olan bazı genişlikli boşluk unicode karakterleri gösterdi.

orderBy\u200c\u200b= 

Bu iki karakteri kaldırdıktan sonra her şey gerektiği gibi çalışır.

İlgili konular