2013-09-17 3 views
3

Редактировать ===========Альтернатива для getPublicTimeline для jtwitter

Pasted из MANIFEST.MF файла:

Main-Class: winterwell.jtwitter.Twitter 
Implementation-Version: 2.9.0 
Implementation-Title: JTwitter client library by Winterwell 


Android Studio 0.2.9 
jtwitter 2.9.0 

Здравствуйте,

Я после Маракана видео по созданию клиента yamba.

Однако, я заметил, что вызов getPublicTimeline api теперь удален из jtwitter, так как Twitter больше не поддерживает это. Поэтому я устал использовать альтернативу вместо этого, но получаю ошибку, которую я разрезал и вставил ниже.

Различные API, которые я пробовал, это getFriendsTimeline, getHomeTimeline.

Мой фрагмент кода я использую:

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.status); 

    edit_status = (EditText)findViewById(R.id.editText); 
    tw = new Twitter("student", "password"); 
    tw.setAPIRootUrl("http://yamba.marakana.com/api"); 
} 

public class GetHomeStatus extends AsyncTask<String, Integer, String> 
{ 
    @Override 
    protected String doInBackground(String... statues) 
    { 
     int i = 0; 
     List<winterwell.jtwitter.Status> timeline; 

     try { 
      timeline = twitter.getFriendsTimeline(); 
      //twitter.setStatus("Hello, there!"); 
     } 
     catch (TwitterException e) { 
      e.printStackTrace(); 
      return "Failed to get timeline"; 
     } 

Я не думаю, что есть проблема с фоновым потоком, так как twitter.setStatus("Hello, there!"); работает отлично.

Многие предложения были бы весьма признательны

Исключение:

275-445/system_process W/InputMethodManagerService﹕ Window already focused, ignoring focus gain of: [email protected] attribute=null, token = [email protected] 
09-11 03:58:37.108 3187-3204/com.sunsystems.yambaapp W/System.err﹕ winterwell.jtwitter.TwitterException: 301 Moved Permanently 
09-11 03:58:37.108 3187-3204/com.sunsystems.yambaapp W/System.err﹕ HTTP/1.1 301 Moved Permanently https://marakana.com/s/tags/breaking_open/?include_entities=1& -> https://marakana.com/s/tags/breaking_open/?include_entities=1& 
09-11 03:58:37.118 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at winterwell.jtwitter.URLConnectionHttpClient.processError(URLConnectionHttpClient.java:513) 
09-11 03:58:37.118 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at winterwell.jtwitter.URLConnectionHttpClient.connect(URLConnectionHttpClient.java:155) 
09-11 03:58:37.118 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at winterwell.jtwitter.URLConnectionHttpClient.getPage2(URLConnectionHttpClient.java:311) 
09-11 03:58:37.118 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at winterwell.jtwitter.URLConnectionHttpClient.getPage(URLConnectionHttpClient.java:251) 
09-11 03:58:37.118 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at winterwell.jtwitter.Twitter.getStatuses(Twitter.java:1660) 
09-11 03:58:37.118 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at winterwell.jtwitter.Twitter.getHomeTimeline(Twitter.java:1162) 
09-11 03:58:37.118 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at winterwell.jtwitter.Twitter.getFriendsTimeline(Twitter.java:1153) 
09-11 03:58:37.118 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at com.sunsystems.yambaapp.UpdateService$GetHomeStatus.doInBackground(UpdateService.java:70) 
09-11 03:58:37.118 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at com.sunsystems.yambaapp.UpdateService$GetHomeStatus.doInBackground(UpdateService.java:61) 
09-11 03:58:37.128 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:287) 
09-11 03:58:37.128 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
09-11 03:58:37.128 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
09-11 03:58:37.128 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
09-11 03:58:37.128 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
09-11 03:58:37.128 3187-3204/com.sunsystems.yambaapp W/System.err﹕ at java.lang.Thread.run(Thread.java:841) 
+0

Вы используете Twitter # setApiRoot (String)? Если да, то какой URL-адрес вы передаете в качестве аргумента? – Vikram

+0

@ user2558882 Я должен был показать это как tw.setAPIRootUrl («http://yamba.marakana.com/api»); Теперь я отредактировал свой вопрос с обновленным фрагментом кода. Благодарю. – ant2009

+0

'jtwitter 2.9.0': Я не думаю, что вы используете это. Похоже, вы используете библиотеку 'JTwitterYamba', которая основана на' JTwitter'. Я предлагаю вам загрузить библиотеку из: [Link] (http://www.winterwell.com/software/jtwitter/jtwitter-2.9.0.zip). Добавьте файл jar в свой проект. Удалите зависимости JTwitterYamba и повторите попытку. Я не вижу опубликованное исключение при использовании данных, которые вы указали. – Vikram

ответ

6

Я был в состоянии воспроизвести указанное исключение, используя JTwitter 2.9.0. Причина моего ранее предложение было:

List<winterwell.jtwitter.Status> timeline; 

Я использовал модифицированную версию библиотеки JTwitter: JTwitterYamba. Эта библиотека не содержит winterwell.jtwitter.Status. Вместо этого Status является внутренним классом, определенным в winterwell.jtwitter.Twitter, что делает его полный путь: winterwell.jtwitter.Twitter.Status.

List<winterwell.jtwitter.Twitter.Status> timeline; 

Таким образом, вместо того, чтобы просить вас потерять JTwitter банку и добавить JTwitterYamba банку, я предложил прямо противоположное. Прошу прощения за путаницу.

Проблема:

Обе библиотеки реализовать Twitter.getFriendsTimeline() по-разному.Вот что делает JTwitterYamba:

public List<Status> getFriendsTimeline() throws TwitterException { 

    // Take note of the URL suffix: /statuses/friends_timeline.json 
    return getStatuses(TWITTER_URL + "/statuses/friends_timeline.json", 
     standardishParameters(), true); 
} 

И, вот что делает JTwitter:

@Deprecated 
public List<Status> getFriendsTimeline() throws TwitterException { 
    return getHomeTimeline(); 
} 


public List<Status> getHomeTimeline() throws TwitterException { 
    assert http.canAuthenticate(); 

    // The URL isn't the same 
    return getStatuses(TWITTER_URL + "/statuses/home_timeline.json", 
         standardishParameters(), true); 
} 

Что вы можете сделать, чтобы исправить это:

Вы можете удалить JTwitter из вашего проекта и добавьте JTwitterYamba банку: Link. Вам нужно будет изменить winterwell.jtwitter.Status на winterwell.jtwitter.Twitter.Status.

В качестве альтернативы вы можете проверить, разрешено и возможно ли изменение библиотеки. Добавьте открытый метод, который использует TWITTER_URL + "/statuses/friends_timeline.json" как один из аргументов метода Twitter.getStatuses.

3

Marakana перенаправляет thenewcircle как они были приобретены твиттере.

По this page есть две вещи, чтобы попробовать ...

Получить .jar из APK, щелкнув правой кнопкой мыши на вашем проекте, выберите пункт Свойства и перейти на путь сборки Java. Перейдите на вкладку «Заказ и экспорт» и отметьте jtwiiter-yamba.jar. Также удалите эти строки жёстко прописанные

// twitter = new Twitter("student", "password"); 
// twitter.setAPIRootUrl("http://yamba.marakana.com/api"); 
Смежные вопросы