gpt4 book ai didi

android - jtwitter getPublicTimeline 的替代方案

转载 作者:太空宇宙 更新时间:2023-11-03 11:58:19 26 4
gpt4 key购买 nike

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

从 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 客户端的 marakana 视频。

但是,我注意到 getPublicTimeline api 调用现在已从 jtwitter 中删除,因为 twitter 不再支持它。因此,我厌倦了使用替代方法,但收到了一个错误,我已将其剪切并粘贴在下面。

我尝试过的不同 API 是 getFriendsTimelinegetHomeTimeline

我正在使用的代码 fragment :

@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!"); 工作正常。

如有建议,将不胜感激

异常(exception):

 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)

最佳答案

我能够使用 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 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);
}

而且,这是 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 jar:Link .您必须将 winterwell.jtwitter.Status 更改为 winterwell.jtwitter.Twitter.Status

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

关于android - jtwitter getPublicTimeline 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18848001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com