2012-12-13 12 views
6

वर्तमान फेसबुक एपीआई v3.0.2.b एक com.facebook.Response ऑब्जेक्ट वापस करेगा जो प्रतिक्रिया रखता है। क्या आप जानते हैं कि इसका विश्लेषण कैसे करें? निम्नलिखित कोड एक अपवाद :(एंड्रॉइड फेसबुक एपीआई के प्रतिक्रिया ऑब्जेक्ट को संभालना

//execute the request 
Request request = new Request 
(
    session, 
    "/fql", 
    params, 
    HttpMethod.GET, 
    new Request.Callback() 
    { 
     @Override 
     public void onCompleted(Response response) 
     { 
      try 
      { 
       JSONArray json = new JSONArray(response.toString()); 
      } 
      catch (Throwable t) 
      { 
       System.err.println(t); 
      } 
     } 
    } 
); 
Request.executeBatchAsync(request); 

त्रुटि संदेश दर्शाता बढ़ा देंगे:

org.json.JSONException: Unterminated object at character 25 of {Response: responseCode: 200, graphObject: GraphObject{graphObjectClass=GraphObject, state={"data":[{"pic_square":..... 

किसी को भी पता है सही समाधान क्या मैं

GraphObject go = response.getGraphObject(); 

का उपयोग दूँ .. कैसे कर सकते हैं मुझे इसके साथ ग्राफयूसर-ऑब्जेक्ट मिलते हैं?

क्षमा करें, यह एक मामूली समस्या की तरह लगता है लेकिन प्रसंस्करण प्रतिक्रिया-वस्तु को फेसबुक दस्तावेज़ों में खराब तरीके से दस्तावेज किया गया है और मैं वेब पर इसके बारे में कुछ भी प्राप्त नहीं कर पाया :(

बहुत पहले से धन्यवाद!

अभिवादन क्रिस्टोफर

+0

में 'response.responseCode' का मूल्य देखने की कोशिश अपने' पूर्ण 'विधि पर। क्या आप वहां 200 देख सकते हैं? –

+0

हाय प्रैटिक, आपकी प्रतिक्रिया के लिए धन्यवाद। हां - कोड 200 है और इस बीच, मैंने इस मुद्दे को हल किया है :) मैं अपना समाधान पोस्ट करना चाहता हूं लेकिन मैं अभी तक अपने प्रश्नों का उत्तर नहीं दे सकता :( –

+0

बढ़िया है कि आप अपनी समस्या का समाधान करते हैं। मुझे लगता है कि आपको मिल रहा है ऑब्जेक्ट के रूप में प्रतिक्रिया केवल इसलिए 'प्रतिक्रिया.toString()' जैसी स्ट्रिंग में कनवर्ट करने की आवश्यकता नहीं है। यही मैं 'प्रतिक्रिया.responseCode' के साथ जांचना चाहता हूं। –

उत्तर

31

इस समाधान है कि मेरे लिए काम किया है - मैं प्रतिक्रिया की जांच और कुछ तरीकों के साथ एक सा चारों ओर खेलने के लिए था, लेकिन अंत में यह :)

/************************************************************************ 
* Parses the user data from the facebook FQL 
* 
* "SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())" 
* 
* This is the example query from 
* {@link http://developers.facebook.com/docs/howtos/androidsdk/3.0/run-fql-queries/} 
* 
* @param response The facebook response from the FQL 
************************************************************************/ 
public static final void parseUserFromFQLResponse(Response response) 
{ 
    try 
    { 
     GraphObject go = response.getGraphObject(); 
     JSONObject jso = go.getInnerJSONObject(); 
     JSONArray arr = jso.getJSONArray("data"); 

     for (int i = 0; i < (arr.length()); i++) 
     { 
      JSONObject json_obj = arr.getJSONObject(i); 

      String id  = json_obj.getString("uid"   ); 
      String name = json_obj.getString("name"   ); 
      String urlImg = json_obj.getString("pic_square" ); 

      //... 

     } 
    } 
    catch (Throwable t) 
    { 
     t.printStackTrace(); 
    } 
} 

आशा हल इस मदद करता है किसी दिन किसी दिन।

अभिवादन

क्रिस्टोफर

अद्यतन

GraphObject अब एक वर्ग है, इसलिए केवल:

JSONObject jso = response.getJSONObject(); 
JSONArray arr = jso.getJSONArray("data"); 
संबंधित मुद्दे