我很难获得Twitter用户拥有的关注者数量。
我确实关注了twitter rest api文档,但无法找到问题的答案。我通过他们的其他API成功拨打电话,我正在获得成功"回电话,但我不知道如何解析我的回复。他们的文档一直在说"它返回" ID"的集合。所以我假设我可以将响应解析为ID列表(List),但这会导致gson解析错误。我可以成功地将其解析为JSONOBject但最终为空。
以下是相关代码:
exchange_rates = {'EUR': 1.10, 'GBP': 1.31, ...}
# create a long set of case conditions as a string
er_case_statement = "\n".join("mytable.currency = \"{0}\" then {1}".format(k,v) for (k,v) in exchange_rates.iteritems())
# build the sql with these case statements
sql = """select <some stuff>,
case {0}
end as exchange_rate,
other columns
from tables etc
where etc
""".format(er_case_statement)
import com.twitter.sdk.android.core.models.User;
package com.boomer.omer.kollabstr.backend.twitteroauth;
然后我发送/处理来自:
的请求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);
}
我在这里关注了他们的文档:https://dev.twitter.com/rest/reference/get/followers/ids
我想得到一个id列表,这样我就可以得到它的大小,这应该是根据页面的关注者数量。但即使我可以获得成功的回调(我假设它表明成功完成了查询)我无法弄清楚应该将响应解析为什么。
感谢任何帮助。请不要简单地将我推荐给其他图书馆来完成这项工作。
答案 0 :(得分:2)
我找到了答案。我只需要将响应从Retrofit解析为Response类。然后将其转换为JSON对象。
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;
}
答案 1 :(得分:0)
尝试使用我在某些项目中使用的代码来实现Twitter集成:
Twitter4j设置
下载twitter4j库(jar文件),将以下内容添加到libs文件夹,然后在libs文件夹中右键单击它们 Add as Library 。这意味着您的build.gradle文件将如下所示:
dependencies{
...
compile files('libs/twitter4j-async-4.0.4.jar')
compile files('libs/twitter4j-core-4.0.4.jar')
}
现在,您已准备好使用此库与Twitter建立联系。
假设:您已在Twitter上的开发者帐户中创建了Twitter应用程序。
接下来,无论您希望如何处理请求(AsyncTask,Service等):
//this sample code searches for twitter accounts
//rest of your code here
@Override
protected ResponseList<User> doInBackground(String... params) {
String location = "kansas city";
try {
//mTwitter is your Twitter instance!
return mTwitter.searchUsers(location, 20);
}catch (TwitterException e){
e.getMessage();
}
return null;
}
@Override
protected void onPostExecute(ResponseList<User> response){
if (response != null){
progress.dismiss();
if (response.size() == 0 ){
//you got no results back; zero
}else{
//you can loop through the response list
User u = response.get(0);
Log.i("USERCOUNT", "THE COUNT: " + u.getFollowersCount());
}
}
}
因此,您可以使用此库快速获得结果;
我希望这对您有所帮助,如果您需要进一步的帮助,请告诉我们!