Android Can';t获取twitter用户';通过TwitterAPI的用户数量
我很难获得twitter用户的粉丝数量 我确实遵循了TwitterRESTAPI文档,但找不到问题的答案。我通过他们的RESTAPI成功地进行了调用,并且得到了一个“成功”的回调,但我不知道如何解析我的响应。他们的文档一直在说“它返回一个“ID集合”。所以我假设我可以将响应解析为一个ID列表(List),但这会导致gson解析错误。我可以成功地将其解析为一个JSONOBject,但结果是空的 以下是相关代码:Android Can';t获取twitter用户';通过TwitterAPI的用户数量,android,rest,twitter,twitter-fabric,Android,Rest,Twitter,Twitter Fabric,我很难获得twitter用户的粉丝数量 我确实遵循了TwitterRESTAPI文档,但找不到问题的答案。我通过他们的RESTAPI成功地进行了调用,并且得到了一个“成功”的回调,但我不知道如何解析我的响应。他们的文档一直在说“它返回一个“ID集合”。所以我假设我可以将响应解析为一个ID列表(List),但这会导致gson解析错误。我可以成功地将其解析为一个JSONOBject,但结果是空的 以下是相关代码: package com.boomer.omer.kollabstr.backend.t
package com.boomer.omer.kollabstr.backend.twitteroauth;
导入com.twitter.sdk.android.core.models.User
import org.json.JSONObject;
import java.util.List;
import retrofit.Callback;
import retrofit.http.GET;
import retrofit.http.Query;
public interface TwitterGetFollowerCountApiClient {
@GET("/1.1/followers/ids.json")
void getFollowerCount(@Query("user_id")Long id,
@Query("screen_name")String screenname,
@Query("cursor")Long cursor,
@Query("stringify_ids")Boolean sids,
@Query("count")Long count,
Callback<JSONObject> users);
}
import org.json.JSONObject;
导入java.util.List;
进口改装.回收;
导入reformation.http.GET;
导入reformation.http.Query;
公共接口TwitterGetFollowerCountApiClient{
@GET(“/1.1/followers/ids.json”)
void getFollowerCount(@Query(“user_id”)长id,
@查询(“屏幕名称”)字符串屏幕名称,
@查询(“游标”)长游标,
@查询(“stringify_id”)布尔SID,
@查询(“计数”)长计数,
回调用户);
}
然后我从以下地址发送/处理请求:
private void createSocialMediaObject(final TwitterSession twitterSession){
getKollabstrTwitterApiClient().getFollowerCountService().
getFollowerCount(twitterSession.getUserId(),
null,
null,
null,
null,
new Callback<JSONObject>() {
@Override
public void success(Result<JSONObject> result) {
SocialMedia twitter = new SocialMedia();
twitter.setUsername(twitterSession.getUserName());
twitter.setUserid(Long.toString(twitterSession.getUserId()));
twitter.setSocialMediaType(SocialMediaType.TWITTER);
//twitter.setImpact(result.data.size());
// Log.d(TAG,"FOLLOWERS:" + Integer.toString(result.data.size()));
Users user = SessionManager.getInstance().getCurrentUser();
user.getProfile().getSocialMediaAccounts().add(twitter);
SessionManager.getInstance().updateUser(user);
Log.d("FOLLOWER",Integer.toString(result.data.length()));
}
@Override
public void failure(TwitterException exception) {
Log.d(TAG,"FOLLOWER ERROR:" + exception.toString());
}
});
}
private void createSocialMediaObject(最终TwitterSession TwitterSession){
GetKollabstrTwitterAppClient().getFollowerCountService()。
getFollowerCount(twitterSession.getUserId(),
无效的
无效的
无效的
无效的
新回调函数(){
@凌驾
公开作废成功(结果){
社交媒体推特=新社交媒体();
setUsername(twitterSession.getUserName());
setUserid(Long.toString(twitterSession.getUserId());
setSocialMediaType(SocialMediaType.twitter);
//setImpact(result.data.size());
//Log.d(标记“FOLLOWERS:+Integer.toString(result.data.size()));
Users user=SessionManager.getInstance().getCurrentUser();
user.getProfile().getSocialMediaAccounts().add(twitter);
SessionManager.getInstance().updateUser(用户);
Log.d(“FOLLOWER”,Integer.toString(result.data.length());
}
@凌驾
公共无效失败(TwitterException异常){
Log.d(标记“followererror:+exception.toString());
}
});
}
我遵循了他们的文档:
我想得到一个ID列表,这样我就可以得到它的大小,根据他们的页面应该是跟随者的数量。但是,即使我可以得到一个成功回调(我假设这表明一个成功的查询正在进行),我也无法弄清楚响应应该被解析成什么
非常感谢您的帮助。请不要简单地让我参考其他库来完成这项工作。请尝试我在一些项目中使用的代码,以实现Twitter集成: Twitter4j设置 下载库(jar文件),将以下内容添加到您的libs文件夹中,然后从libs文件夹中右键单击它们,将其添加到添加为库。这意味着您的build.gradle文件将如下所示:
dependencies{
...
compile files('libs/twitter4j-async-4.0.4.jar')
compile files('libs/twitter4j-core-4.0.4.jar')
}
现在,您已经准备好使用此库连接Twitter
假设:您已经在Twitter上的开发者帐户上创建了一个Twitter应用程序
接下来,不管您希望如何执行请求(异步任务、服务等):
//此示例代码搜索twitter帐户
//剩下的代码在这里
@凌驾
受保护的响应列表doInBackground(字符串…参数){
字符串location=“堪萨斯城”;
试一试{
//mTwitter是您的Twitter实例!
返回mTwitter.searchUsers(位置,20);
}捕获(twitter异常){
e、 getMessage();
}
返回null;
}
@凌驾
受保护的void onPostExecute(响应列表响应){
if(响应!=null){
进步。解散();
if(response.size()==0){
//你没有得到任何结果;零
}否则{
//您可以循环浏览响应列表
用户u=响应。获取(0);
Log.i(“USERCOUNT”,“COUNT:+u.getFollowersCount());
}
}
}
因此,您可以使用此库快速获得结果
我希望这对您有所帮助,如果您需要进一步的帮助,请告诉我!请尝试我在一些项目中使用的代码,以实现Twitter集成: Twitter4j设置 下载库(jar文件),将以下内容添加到您的libs文件夹中,然后从libs文件夹中右键单击它们,将其添加到添加为库。这意味着您的build.gradle文件将如下所示:
dependencies{
...
compile files('libs/twitter4j-async-4.0.4.jar')
compile files('libs/twitter4j-core-4.0.4.jar')
}
现在,您已经准备好使用此库连接Twitter
假设:您已经在Twitter上的开发者帐户上创建了一个Twitter应用程序
接下来,不管您希望如何执行请求(异步任务、服务等):
//此示例代码搜索twitter帐户
//剩下的代码在这里
@凌驾
受保护的响应列表doInBackground(字符串…参数){
字符串location=“堪萨斯城”;
试一试{
//mTwitter是您的Twitter实例!
返回mTwitter.searchUsers(位置,20);
}捕获(twitter异常){
e、 getMessage();
}
返回null;
}
@凌驾
受保护的void onPostExecute(响应列表响应){
if(响应!=null){
进步。解散();
if(response.size()==0){
//你没有得到任何结果;零
}否则{
//您可以循环浏览响应列表
public JSONObject responseToJSON(Response response){
BufferedReader reader = null;
StringBuilder sb = new StringBuilder();
JSONObject jsonObject = null;
try {
reader = new BufferedReader(new InputStreamReader(response.getBody().in()));
String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
String result = sb.toString();
try {jsonObject=new JSONObject(result);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject;
}