【问题标题】:Yamba - 301 Moved Permanently https://twitter.com/statuses/update.jsonYamba - 301 永久移动 https://twitter.com/statuses/update.json
【发布时间】:2014-06-19 12:32:17
【问题描述】:

我按照“Learning Android”一书中的指南构建了一个类似 Twitter 的应用程序。 首先,我使用 jtwitter.jar 作为库。当向服务器发送新状态时,应用程序写了“失败”,但该消息出现在服务器页面上。今天我做了一些重构(将通用功能引入应用程序类并添加服务),之后我得到了301 Moved Permanently https://twitter.com/statuses/update.json -> https://twitter.com/statuses/update.json。遵循this 的建议,我尝试使用 jtwitter-yamba.jar。错误的文字发生了一些变化(如下),但似乎还是一样。

E/StatusActivity﹕ winterwell.jtwitter.TwitterException: 301 Moved Permanently https://twitter.com/statuses/update.json
W/System.err﹕ winterwell.jtwitter.TwitterException: 301 Moved Permanently https://twitter.com/statuses/update.json
W/System.err﹕ at winterwell.jtwitter.URLConnectionHttpClient.processError(URLConnectionHttpClient.java:155)
W/System.err﹕ at winterwell.jtwitter.URLConnectionHttpClient.post(URLConnectionHttpClient.java:219)
W/System.err﹕ at winterwell.jtwitter.Twitter.post(Twitter.java:1944)
W/System.err﹕ at winterwell.jtwitter.Twitter.updateStatus(Twitter.java:2555)
W/System.err﹕ at winterwell.jtwitter.Twitter.updateStatus(Twitter.java:2502)
W/System.err﹕ at org.my.yamba.StatusActivity$PostToTwitter.doInBackground(StatusActivity.java:93)
W/System.err﹕ at org.my.yamba.StatusActivity$PostToTwitter.doInBackground(StatusActivity.java:88)
W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:287)
W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:234)
W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
W/System.err﹕ at java.lang.Thread.run(Thread.java:841)

导致错误的代码:

Twitter.Status status = ((YambaApplication) getApplication())
                        .getTwitter().updateStatus(statuses[0]);

其中 YambaApplication 是一个新的 Application 类:

import android.app.Application;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.util.Log;
import winterwell.jtwitter.Twitter;

public class YambaApplication extends Application implements OnSharedPreferenceChangeListener{

    private static final String TAG = YambaApplication.class.getSimpleName();
    public Twitter twitter;
    private SharedPreferences prefs;
    @Override
    public void onCreate() {
        super.onCreate();
        this.prefs = PreferenceManager.getDefaultSharedPreferences(this);
        this.prefs.registerOnSharedPreferenceChangeListener(this);
        Log.i(TAG, "onCreated");
    }
    @Override
    public void onTerminate() {
        super.onTerminate();
        Log.i(TAG, "onTerminated");
    }
    public synchronized Twitter getTwitter() {
        if (this.twitter == null) {
            String username = this.prefs.getString("username", "");
            String password = this.prefs.getString("password", "");
            String apiRoot = prefs.getString("apiRoot",
                    "http://yamba.marakana.com/api");
            if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password)
                    && !TextUtils.isEmpty(apiRoot)) {
                this.twitter = new Twitter(username, password);
                this.twitter.setAPIRootUrl(apiRoot);
            }
        }
        return this.twitter;
    }
    public synchronized void onSharedPreferenceChanged(
            SharedPreferences sharedPreferences, String key) {
        this.twitter = null;
    }
}

可能是什么问题?如何让它发挥作用?

【问题讨论】:

    标签: android twitter


    【解决方案1】:

    在下面的帖子中,您将了解为什么会发生这种情况:Authorization error with jTwitter for android

    我迟到了这些帖子 - 我一直忙于阅读,然后我不得不说我将 twitter 库版本更改为到目前为止的最新版本(3.0.1)。似乎当您这样做时,错误不会发生并且应用程序运行良好。

    你可以在这里下载最后一个:http://www.winterwell.com/software/jtwitter.php

    注意:我建议您下载 ZIP 文件并对 jTwitter 的 libs 文件夹中的 jar 进行 libs 引用 - 它应该可以一次性使用。

    Yamba 应用程序有第二个版本。您可以使用 GitHub 更改您的代码或尝试使用建议以保留以前的代码(Book 1st Edition):https://github.com/learning-android

    就我个人而言,我不知道为什么 Marko 没有为 Android 新手做得更容易,他应该在项目的后期添加依赖项。好消息是我学到了他们没有解释的东西:)

    热烈的问候,

    莱安德罗

    【讨论】:

      猜你喜欢
      • 2019-11-04
      • 2012-07-10
      • 2012-11-21
      • 2013-09-26
      • 2019-10-14
      • 2018-06-18
      • 2018-06-23
      • 2021-08-13
      • 1970-01-01
      相关资源
      最近更新 更多