2011-06-16 103 views
2

我想使用圖形批處理api,有沒有任何參考代碼?我們如何設置 參數?有沒有人使用批量API參考Android應用Android的facebook圖形批處理api

我使用this link 和我也已經使用單獨的圖形API,如

fbApiObj.request("me/notifications"); 
fbApiObj.request("me/home");fbApiObj.request("me/friends"); 

我想批量他們。以上鍊接中提供的解釋並不十分清楚如何轉換爲API調用。

+0

希望更新後的信息讓事情變得清晰 – Kavitha 2011-06-16 22:09:12

回答

0

從Facebook的圖形API的批次要求都可以通過HTTP請求。請求是否來自Android手機並不重要。

這是一個相當最新功能和Facebook的Android SDK中還沒有在github上最近更新的,所以你需要直接處理這些請求。

參考:http://developers.facebook.com/docs/reference/api/batch/

11

你需要做的是建立一個JSONArray爲您的要求,然後再轉換JSONArray爲字符串您把它送到使用HTTPS POST服務器之前。對於每個請求,根據Facebook API(先前發佈的鏈接)創建JSONObject,然後將所有這些JSONObjects添加到JSONArray,並使用Facebook SDK的內置「openUrl」方法(位於SDK內的Util類中)。

下面是我爲檢驗批的一個小例子。

JSONObject me_notifications = new JSONObject(); 
try { 
    me_notifications.put("method", "GET"); 
    me_notifications.put("relative_url", "me/notifications"); 
} catch (JSONException e) { 
    e.printStackTrace(); 
    Log.e(TAG, e.getMessage()); 
} 

JSONObject me_home = new JSONObject(); 
try { 
    me_home.put("method", "GET"); 
    me_home.put("relative_url", "me/home"); 
} catch (JSONException e) { 
    e.printStackTrace(); 
    Log.e(TAG, e.getMessage()); 
} 

JSONObject me_friends = new JSONObject(); 
try { 
    me_friends.put("method", "GET"); 
    me_friends.put("relative_url", "me/friends"); 
} catch (JSONException e) { 
    e.printStackTrace(); 
    Log.e(TAG, e.getMessage()); 
} 

JSONArray batch_array = new JSONArray(); 
batch_array.put(me_home); 
batch_array.put(me_notifications); 
batch_array.put(me_friends); 

new FacebookBatchWorker(this, mHandler, false).execute(batch_array); 

而且FacebookBatchWorker僅僅是一個的AsyncTask(只需使用任何線程你想真的...)。重要的部分是HTTPS請求,我使用facebook SDK中已有的那些,就像這樣。

的「PARAMS [0]的ToString()」是JSONArray我發送到的AsyncTask,我們需要轉換爲用於實際發佈請求的字符串。

/* URL */ 
String url = GRAPH_BASE_URL; 

/* Arguments */ 
Bundle args = new Bundle(); 
args.putString("access_token", FacebookHelper.getFacebook().getAccessToken()); 
args.putString("batch", params[0].toString()); 

String ret = ""; 

try { 
    ret = Util.openUrl(url, "POST", args); 
} catch (MalformedURLException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

希望你能得到的東西這...

+0

您必須用您自己的「relative_url」替換我創建的JSONObjects。而不是我的「搜索?類型=簽入」你會有你的「我/朋友」。 – Andreas 2011-07-09 08:54:13

+0

我更改了JSONArray以更好地適合您的批處理。 – Andreas 2011-07-09 09:03:51