2017-02-01 9 views
5

मैं एक निम्न वास्तुकला है:Firebase डाटाबेस बाकी और orderBy मूल्य के साथ मिल equalTo

  • मोबाइल ग्राहक Google अनुप्रयोग इंजन एप्लिकेशन (जावा)
  • GAE बनाता से REST कॉल के साथ Firebase डाटाबेस से कुछ जानकारी हो जाता है से कनेक्ट कर रहा

क्योंकि फायरबेस व्यवस्थापक एसडीके पृष्ठभूमि धागे के कारण जीएई के साथ अच्छी तरह से काम नहीं करता है, मैंने फायरबेस रीस्ट एपीआई का उपयोग करने का फैसला किया। जब मैं फ़ायरबेस डाटाबेस अपडेट करता हूं या विशिष्ट पथ से कुछ प्राप्त करता हूं तो सभी ठीक हो जाता है लेकिन जब मैं डेटा फ़िल्टर करना चाहता हूं तो मुझे एक समस्या आती है।

जब कर्ल अनुरोध सब कुछ कर रही है महान काम करता है:

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

लेकिन जब ठीक उसी अनुरोध मेरी GAE अनुप्रयोग में जावा कोड से HttpURLConnection या URLFetchService का उपयोग कर कर मैं अजीब त्रुटियों का सामना करना। सबसे पहले उन त्रुटियों urlencoding रहे थे, तो मैं कुछ इस तरह करने के लिए अपने यूआरएल बदलना पड़ा:

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

किसी भी विचार मैं गलत क्या कर रहा हूँ?

+0

कृपया जावा कोड जोड़ें जो 'urlString' घोषित करता है और आरंभ करता है। –

+0

@ फ्रैंकवनफफेलन विवरण में जोड़ा गया। मैंने यह सुनिश्चित करने के लिए स्ट्रिंग को असाइन किया है कि स्ट्रिंग में कोई त्रुटि नहीं है। –

उत्तर

1

यह पता लगाने के लिए दर्दनाक था, लेकिन मैं स्थानीय एप्लिकेशन इंजन सर्वर से बाहर जाने वाले अनुरोध देखने के लिए एक प्रॉक्सी की स्थापना की, और यह कुछ नहीं-चौड़ाई स्थान यूनिकोड वर्ण कि समस्या का कारण पता चला है।

orderBy\u200c\u200b= 

उन दो पात्रों को हटाने के बाद सबकुछ काम करता है जैसा कि करना चाहिए।

संबंधित मुद्दे