title: winterwell.jtwitter.TwitterException$Timeout -- From the book "Learning Android"
body: <p>When I run the code from page 71, eclipse showed me some error:</p>
  
  <blockquote>
    <p>11-17 09:37:47.077: E/StatusActivity(370):
    winterwell.jtwitter.TwitterException$Timeout:
    <a href="http://yamba.marakana.com/api/statuses/update.json" rel="nofollow">http://yamba.marakana.com/api/statuses/update.json</a></p>
  </blockquote>
  
  <p>I don't know what's going on,thanks in advance:)</p>
  
  <p>PS: I have asked this question <a href="http://marakana.com/forums/android/learning_android_book/539.html" rel="nofollow">here</a>, but there is no response</p>
  
  <p>Any help will be appreciated:)</p>
  
  <p>The code is:</p>
  
  <pre><code>package com.marakana.yamba;
  
  import winterwell.jtwitter.Twitter;
  import winterwell.jtwitter.TwitterException;
  import android.app.Activity;
  import android.graphics.Color;
  import android.os.AsyncTask;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.Button;
  import android.widget.EditText;
  import android.widget.TextView;
  import android.widget.Toast;
  import android.text.TextWatcher;
  import android.text.Editable;
  
  
  public class StatusActivity extends Activity implements OnClickListener, TextWatcher{
      private static final String TAG = "StatusActivity";
      EditText editText;
      Button updateButton;
      Twitter twitter;
      TextView textCount;
  
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.status);
  
          //Find views
          editText = (EditText) findViewById(R.id.editText1);
          updateButton = (Button) findViewById(R.id.buttonUpdateStatus);
          updateButton.setOnClickListener(this);
  
          textCount = (TextView) findViewById(R.id.textCount);
          textCount.setText(Integer.toString(140));
          textCount.setTextColor(Color.GREEN);
          editText.addTextChangedListener(this);
  
          twitter = new Twitter("SOMENAME", "SOMEPASS");
          twitter.setAPIRootUrl("http://yamba.marakana.com/api");
      }
  
      // Asynchronously posts to twitter
      class PostToTwitter extends AsyncTask&lt;String, Integer, String&gt; {
          // Called to initiate the background activity
          @Override
          protected String doInBackground(String... statuses){
              try{
                  winterwell.jtwitter.Status status = twitter.updateStatus(statuses[0]);
                  return status.text;
              } catch (TwitterException e){
                  Log.e(TAG, e.toString());
                  e.printStackTrace();
                  return "Failed to post";
              }
          }
          // Called when there's a status to be updated
          @Override
          protected void onProgressUpdate(Integer... values){
              super.onProgressUpdate(values);
          }
  
          // Called once the background activity has completed
          @Override
          protected void onPostExecute(String result){
              Toast.makeText(StatusActivity.this, result, Toast.LENGTH_LONG).show();
          }
      }
  
      //TextWatcher methods
      public void afterTextChanged(Editable statusText){
          int count = 140 - statusText.length();
          textCount.setText(Integer.toString(count));
          textCount.setTextColor(Color.GREEN);
          if (count &lt; 10)
              textCount.setTextColor(Color.YELLOW);
          if (count &lt; 0)
              textCount.setTextColor(Color.RED);
      }
  
      public void beforeTextChanged(CharSequence s, int start, int count, int after){}
      public void onTextChanged(CharSequence s, int start, int before, int count){}
      // Called when button is clicked//
      public void onClick(View v){
          String status = editText.getText().toString();
          new PostToTwitter().execute(status);
          //twitter.setStatus(editText.getText().toString());
          Log.d(TAG, "onClicked");
      }
  }
  </code></pre>