Twitter-каналы с использованием массива JSON - PullRequest
2 голосов
/ 02 ноября 2011

Я разрабатываю приложение для получения каналов Twitter. Я написал следующее

try {   
    codeString x = "";
    Twitter y;
    HttpClient pingclient = new DefaultHttpClient();
    HttpPost pingpost = new HttpPost("https://twitter.com/statuses/user_timeline/krish_hari.json");
    pingpost.addHeader("Accepts", "application/json");
    pingpost.addHeader("Content-type", "application/json");

    org.apache.http.HttpResponse pingResponse = pingclient.execute(pingpost);
    HttpEntity loginEntity = pingResponse.getEntity();
    String result = EntityUtils.toString(loginEntity);

    //InputStream is = this.getResources().openRawResource(R.raw.jsontwitter);
    //byte [] buffer = new byte[is.available()];
    //while (is.read(buffer) != -1);
    //String jsontext = new String(buffer);
    JSONArray entries = new JSONArray(result);

    x = "JSON parsed.\nThere are [" + entries.length() + "]\n\n";

    int i;
    for (i=0;i<entries.length();i++) {
        JSONObject post = entries.getJSONObject(i);
        x += "------------\n";
        x += "Date:" + post.getString("created_at") + "\n";
        x += "Post:" + post.getString("text") + "\n\n";
    }
    tvData.setText(x);
}
catch (Exception je) {
    tvData.setText("Error w/file: " + je.getMessage());
}

Я получаю ошибку error w/file:twitter.com. Может ли кто-нибудь помочь мне взломать это?

Ответы [ 4 ]

0 голосов
/ 22 января 2012

Кажется, вам нужно добавить android.permission.INTERNET

<uses-permission android:name="android.permission.INTERNET" />
0 голосов
/ 02 ноября 2011

Попробуйте этот код:

Проверьте ответ в журнале cat

 public class List extends Activity  {
    String response_data;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        new Load_Task().execute();
    }

    public class Load_Task extends AsyncTask<Void, Void, Void> {
    private final ProgressDialog dialog = new ProgressDialog(List.this);
        // can use UI thread here
        protected void onPreExecute() {
            this.dialog.setMessage("Loading...");
            this.dialog.setCancelable(false);
            this.dialog.show();
        }

        @Override
        protected Void doInBackground(Void... arg0) {
            // TODO Auto-generated method stub
              try{
                HttpClient client = new DefaultHttpClient();  
                String getURL = "http://twitter.com/statuses/user_timeline/krish_hari.json";
                HttpGet get = new HttpGet(getURL);
                HttpResponse responseGet = client.execute(get);  
                HttpEntity resEntityGet = responseGet.getEntity();  
                if (resEntityGet != null) {  
                    response_data=EntityUtils.toString(resEntityGet);
                }
                Log.v("aaaa", ""+response_data);

              }
             catch (Exception e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
             return null;
        }

        @Override
        protected void onPostExecute(Void result) {
             if (this.dialog.isShowing()) {
                 this.dialog.dismiss();
             }
        }
    }
       }
0 голосов
/ 02 ноября 2011

Я использую этот код для получения канала Twitter:

HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(new HttpGet(url[0]));
InputStream is = response.getEntity().getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
StringBuffer sb = new StringBuffer();
try
{
    String line = null;             
    while ((line = br.readLine())!=null)
    {
        sb.append(line);
        sb.append('\n');                
    }
}
catch (IOException e)
{
    e.printStackTrace();
}
String jsontext = new String(sb.toString());

url[0] - это URL-адрес канала JSON.

Вы должны переформатировать свой URL, этот формат, который вы используете сейчас, устарел.

См. https://dev.twitter.com/docs/api/1/get/statuses/user_timeline

0 голосов
/ 02 ноября 2011

Несколько советов, может сработает:

  1. Использовать HTTPGet вместо HTTPPost
  2. Нет необходимости добавлять заголовок, удалите обе эти строки

попробуй это и дай мне знать:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...