Как я могу проанализировать последние 3 твитов вместо последнего 1 с JSON - PullRequest
0 голосов
/ 31 марта 2012

у меня работает этот код и он возвращает последний твит от моего брата, я хотел бы, чтобы он возвратил последние 3 твита, может кто-нибудь мне помочь? я не очень хорош в Java или XML, я только следовал нескольким учебникам от mybringback, пожалуйста, игнорируйте мой плохой английский.

Я думаю, что проблема в строке: JSONObject last = timeline.getJSONObject (0); это заставляет его возвращать первый твит, так как я могу изменить это, чтобы он возвращал первые 3? (0, 1, 2) не допускается: (

package net.thinkbin;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class menu extends Activity {
TextView httpStuff;
HttpClient client;
JSONObject json;


final static String URL = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name=";


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    httpStuff = (TextView) findViewById(R.id.tvHttp1);
    client = new DefaultHttpClient();
    new Read().execute("Title");

    Button view = (Button) findViewById(R.id.button1);
    view.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            startActivity(new Intent("net.thinkbin.TUTORIAL1"));
            finish();
        }
    });

    Button share = (Button) findViewById(R.id.button2);
    share.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            startActivity(new Intent("net.thinkbin.SHARE"));
            finish();
        }
    });

}

public JSONObject lastTweet(String username) 
        throws ClientProtocolException, IOException, JSONException{
    StringBuilder url = new StringBuilder(URL);
    url.append(username);

    System.out.println(url.toString());


    HttpGet get = new HttpGet(url.toString());
    HttpResponse r = client.execute(get);
    int status = r.getStatusLine().getStatusCode();
    if (status == 200){
        HttpEntity e = r.getEntity();
        String data = EntityUtils.toString(e);
        JSONArray timeline = new JSONArray(data);

        JSONObject last = timeline.getJSONObject(0);

        return last;
    }else{
        Toast.makeText(menu.this, "error", Toast.LENGTH_SHORT);
        return null;
    }
}




public class Read extends AsyncTask<String, Integer, String>{

    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub

                try {
                    json = lastTweet("koen*****");
                    return json.getString("params[0]");
                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }



        return null;                
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        httpStuff.setText(result);
    }


}
}

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

https://api.twitter.com/1/statuses/user_timeline.xml?screen_name=username&count=3

используйте этот URL вместо вашего URL

Небольшое изменение в вашем URL добавляется "& count = 3"

0 голосов
/ 31 марта 2012

используйте DilSe url и попробуйте этот код.

public JSONArray lastTweet(String username) 
        throws ClientProtocolException, IOException, JSONException{
    StringBuilder url = new StringBuilder(URL);
    url.append(username);

    System.out.println(url.toString());


    HttpGet get = new HttpGet(url.toString());
    HttpResponse r = client.execute(get);
    int status = r.getStatusLine().getStatusCode();
    if (status == 200){
        HttpEntity e = r.getEntity();
        String data = EntityUtils.toString(e);
        return new JSONArray(data);
    }else{
        Toast.makeText(menu.this, "error", Toast.LENGTH_SHORT);
        return null;
    }
}




public class Read extends AsyncTask<String, Integer, String>{

    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub

                try {
                    JSONArray timeline = lastTweet("koen*****");
                    return timeline.getJSONObject(0).getString("params[0]")+" : "
                                     +timeline.getJSONObject(1).getString("params[0]")+" : "
                                     +timeline.getJSONObject(2).getString("params[0]");

                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }



        return null;                
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        httpStuff.setText(result);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...