2016-07-23 5 views
0

트위터 사용자가 가진 팔로어 수를 얻는 데 어려움을 겪고 있습니다.트위터 API를 통해 트위터 사용자의 팔로어 수를 계산할 수 없습니다.

나는 트위터 나머지 API 문서를 따라 갔고 내 문제에 대한 답변을 찾을 수 없습니다. 나는 나머지 API를 통해 성공적으로 전화를 걸었고 "성공"콜백을 받고 있지만 내 응답을 구문 분석 할 것을 모릅니다. 그들의 설명서를 계속 "ID"컬렉션을 반환합니다. "그래서 내가 ID (목록) 목록에 응답을 구문 분석 할 수 있지만 그 gson 구문 분석 오류가 있다고 가정합니다 .JSONOBject 성공적으로 구문 분석 할 수 있지만 끝납니다. .

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

가 그럼 난 /부터 요청을 처리 보내 비어있는

것은 여기에 관련 코드입니다 :

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

       } 
      }); 



} 

나는 여기에 자신의 문서를 다음 : https://dev.twitter.com/rest/reference/get/followers/ids

는 내가 자신의 페이지에 따라 추종자의 수 있어야한다 그것의 크기를 얻을 수 있도록 ID의 목록을 얻을 싶어요. 그러나 성공 콜백 (성공한 쿼리가 완료되었다고 가정 함)을 얻을 수는 있지만 응답을 구문 분석해야하는 대상이 무엇인지 파악할 수 없습니다.

도움을 주시면 감사하겠습니다. 이 작업을 수행하기 위해 다른 라이브러리로 안내하지 마십시오.

+0

문제가 무엇이든 관계없이 [Retrofit 2] (https : //square.github.)로 전환하는 것이 좋습니다.io/retrofit /)는 사용중인 Retrofit 버전의 후속 버전입니다. – PattaFeuFeu

+0

Twitter4J라는 간단한 라이브러리가있어서 인생을 훨씬 쉽게 해줍니다. – Eenvincible

+0

@Engvincible 나는 특별히 다른 라이브러리를 사용하고 싶지 않다고 말했다. –

답변

2

답변을 찾았습니다. 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; 
} 
0

내가 트위터 통합 작업 얻을 내 프로젝트의 일부에 사용이 코드를보십시오 : 귀하의 libs와 폴더를 마우스 오른쪽에

Twitter4j 설정

다운로드 twitter4j 라이브러리 (jar 파일)을, 다음을 추가 - libs 폴더에서 클릭하여 라이브러리로 추가.

dependencies{ 

    ... 
    compile files('libs/twitter4j-async-4.0.4.jar') 
    compile files('libs/twitter4j-core-4.0.4.jar') 
} 

지금, 당신은 트위터와 연결이 라이브러리를 사용할 준비가 : 그것은 당신의 build.gradle 파일은 다음과 같은 모양을 의미합니다.

가정 : 이미 Twitter의 개발자 계정에 Twitter 응용 프로그램을 만들었습니다.

다음에 관계없이 요청 (AsyncTask를, 서비스 등)을 수행하는 방법의 : 그래서

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

를 빠르게이 라이브러리와 함께 결과를 얻을 수 있습니다;

도움이 되었기를 바랍니다. 도움이 필요하면 알려주세요.

+1

나는 특별히 다른 라이브러리를 사용하고 싶지 않다고 말했다 ... –

+0

죄송합니다. 그 부분은 아마도 당신의 Retrofit '라이브러리'를 업데이트하고 그게 효과가 있을까요? – Eenvincible

관련 문제