2012-12-13 28 views
6

Geçerli Facebook API v3.0.2.b yanıtı tutan bir com.facebook.Response nesnesi döndürecektir. Bunu nasıl ayrıştırılacağını biliyor musun? ? Aşağıdaki kod bir özel durum :(Android Facebook API'sı Yanıt Nesnesiyle İlgili Yanıtlar

//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); 

hata mesajı diyor yükseltecektir: Ben

GraphObject go = response.getGraphObject(); 

kullanmak Shall

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

herkes doğru çözüm biliyor mu .. nasıl olabilir Ben bu ile GraphUser-Objects olsun?

Üzgünüm, bu önemsiz bir sorun gibi görünüyor ama işleme Yanıt-nesne facebook docs zayıf bir şekilde belgelenmiştir ve web üzerinde bu konuda herhangi bir şey alamadık :(

Çok şimdiden teşekkür ederiz! Bu benim için çalıştı çözüm

+0

deneyin senin' onCompleted' yöntemi. Orada 200 tane görebilir misin? –

+0

Hi Pratik, Cevabınız için teşekkür ederiz. Evet - Kod 200 ve bu arada, ben bu sorunu çözdüm :) Çözümümüzü göndermek istiyorum ama henüz kendi sorularımı cevaplayamıyorum :( –

+0

Sorunu çözdüğünüz için çok iyi. yalnızca nesne olarak yanıt olarak bu 'response.toString()' gibi dize dönüştürmeye gerek yoktur. 'response.responseCode' ile kontrol etmek istediğim budur. –

cevap

31

Selamlar Christopher - Ben yanıtını araştırmak ve bazı yöntemlerle biraz uğraşmak zorunda kaldı ama sonunda bu yardımcı olur bunu :)

/************************************************************************ 
* 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(); 
    } 
} 

Umut çözüldü Bir gün herkes.

Selamlar

Christopher

yüzden sadece GÜNCELLEME

GraphObject artık sınıftır, yer: response.responseCode` `değerini görmek için

JSONObject jso = response.getJSONObject(); 
JSONArray arr = jso.getJSONArray("data"); 
İlgili konular