2011-08-08 10 views
0

私はTwitter4J(2.1.0)を使ってつぶやきを更新しようとしています。私は自分のコードに何が間違っているのか分かりません。特に私の問題でTwitter 4Jを使ってつぶやきを更新するには?

は以下のとおりです。

(a)すべてのツイートが正常に投稿されていません。私はしばしばエラーコード-1を得る。 Googleのグループpost ...

によると、あなたはコードを取得-1内部HTTPコンポーネントは に接続したり、APIからの読み取りに失敗したとき。 DNS関連の問題のために、APIが にJVMから到達できない場合は、コード-1を取得することもできます。

奇妙なことに、私はこれをかなり毎回2番目の投稿にしているようでした。これを処理するには、-1エラーコードを受け取ったときはいつでも、私は再び更新を試みます。私はこれが非常に良い解決策ではないことを認識している間。これは、新しいつぶやきが古いつぶやきに一致したときに、時間の95%

(b)は、私が

エラーコード403を複製エラー(エラーコード403)を取得probemがあっても、重複を発生する固定しました今古くなっ...

私の現在のコード(例。「こんにちは」再びエラーコード403とTwitterExceptionをスロー投稿し、その後、ステータスの更新、さまざまなポスト、「こんにちは」掲載)

私のコードは、アクティビティではなくサービス内にあるAsyncTaskにあります。私はTwitterのAPIを使用すると、すでに作ったつぶやきに一致するすべてのつぶやきを拒否します....

class SendTwitAsyncTask extends AsyncTask<String, Void, Void> { 

    @Override 
    protected Void doInBackground(String... params) { 
     String tokenTwit = params[0]; 
     String tokenSecretTwit = params[1]; 
     String strMessageBody = params[2]; 

     AccessToken aToken = new AccessToken(tokenTwit, tokenSecretTwit); 

     // initialize Twitter4J 
     Twitter twitter = new TwitterFactory().getInstance(); 
      twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
      twitter.setOAuthAccessToken(aToken); 


     // create a tweet 
     // strMessageBody varies 
     String tweet = strMessageBody; 




     boolean bool = twitter.isOAuthEnabled(); 

     if (twitter.isOAuthEnabled()) { 
      GeoLocation geolocation = new GeoLocation(-33.91, 151.25); 
      try { 

       twitter.updateStatus(tweet, geolocation); 
       showNotification("Twitter One" , TWIT_SUCCESS); 

      } catch (TwitterException te) { 

       if (te.getStatusCode() == -1) { 
        //try again 
        try { 
         twitter.updateStatus(tweet, geolocation); 

         showNotification("Twitter Two ", TWIT_SUCCESS); 
        } 
        catch (TwitterException tetwo) { 
         describeTwitException(tetwo.getStatusCode()); 
        }  
       } //end if 

       //else exception other than -1 
       else { 
        describeTwitException(te.getStatusCode()); 
       } //end else 

      }// end outer catch 
     } //end if 
     else { 
      showNotification("Unable to authenticate" , TWIT_FAIL); 
     }// 
     return null; 
    } 



} //end class SendTwitAsyncTask 

public void describeTwitException(int twitExceptionCode) { 
    switch (twitExceptionCode) { 

    case (-1): 
     showNotification("Twitter (unable to connect)", TWIT_FAIL); 
     break; 
    case(403): 
     showNotification("Twitter (duplicate tweet)", TWIT_FAIL); 
     break; 
    default: 
     showNotification("Twitter", TWIT_FAIL); 

    } //end switch 
} //end describeTwitException method 

答えて

1

をAsynctaskコードと、下記の別の方法が含まれています。私は古いツイートがこれまで「期限切れ」とは思わない。

+0

ありがとうございます。 Twitterのアンドロイドアプリから重複ツイートを送ろうとしました。最近私のタイムラインにあったツイートが重複して送信されることはありません。しかし、オリジナルのつぶやきが非常に古い(たとえば、1年を超える)たびに、重複したつぶやきがうまく投稿されます。 PS。あなたの回答を投票しましたが、質問が残っていますが、なぜ私は-1のエラーコードステータスを取得しているのかは分かりません。 – Mel

関連する問題