jtwitter的getPublicTimeline的替代方案

ant*_*009 3 android jtwitter

编辑===========

从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
Run Code Online (Sandbox Code Playgroud)

你好,

我一直在关注创建yamba客户端的marakana视频.

但是,我注意到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";
        }
Run Code Online (Sandbox Code Playgroud)

我不认为后台线程有问题,因为twitter.setStatus("Hello, there!");工作正常.

许多建议将非常感激

例外:

 275-445/system_process W/InputMethodManagerService? Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4193edb0 attribute=null, token = android.os.BinderProxy@4177e720
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)
Run Code Online (Sandbox Code Playgroud)

Vik*_*ram 6

我能够使用JTwitter 2.9.0重现所述异常.我之前建议的原因是:

List<winterwell.jtwitter.Status> timeline;
Run Code Online (Sandbox Code Playgroud)

我使用的是JTwitter库的修改版本:JTwitterYamba.此库不包含winterwell.jtwitter.Status.而是Statuswinterwell.jtwitter.Twitter制作完全限定路径时定义的内部类:winterwell.jtwitter.Twitter.Status.

List<winterwell.jtwitter.Twitter.Status> timeline;
Run Code Online (Sandbox Code Playgroud)

因此,我建议完全相反,而不是要求你丢失JTwitter jar并添加JTwitterYamba jar.对此感到抱歉.

问题:

两个库实现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);
}
Run Code Online (Sandbox Code Playgroud)

而且,这是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);
}
Run Code Online (Sandbox Code Playgroud)

你可以做些什么来解决这个问题:

您可以从项目中删除JTwitter并添加JTwitterYamba jar:Link.你将不得不winterwell.jtwitter.Status改为winterwell.jtwitter.Twitter.Status.

或者,您可以检查是否允许修改库.添加一个公共方法,TWITTER_URL + "/statuses/friends_timeline.json"Twitter.getStatuses方法用作方法的参数之一.