Android 使用json数组的twitter提要

Android 使用json数组的twitter提要,android,json,twitter,Android,Json,Twitter,我正在开发一个应用程序来检索Twitter提要。我写了以下内容 try { codeString x = ""; Twitter y; HttpClient pingclient = new DefaultHttpClient(); HttpPost pingpost = new HttpPost("https://twitter.com/statuses/user_timeline/krish_hari.json"); pingpost.addHe

我正在开发一个应用程序来检索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());
}
试试{
代码字符串x=“”;
Twitter-y;
HttpClient pingclient=新的默认HttpClient();
HttpPost pingpost=新的HttpPost(“https://twitter.com/statuses/user_timeline/krish_hari.json");
addHeader(“接受”、“应用程序/json”);
addHeader(“内容类型”、“应用程序/json”);
org.apache.http.HttpResponse pingResponse=pingclient.execute(pingpost);
HttpEntity loginenty=pingResponse.getEntity();
字符串结果=EntityUtils.toString(逻辑性);
//InputStream is=this.getResources().openRawResource(R.raw.jsontwitter);
//byte[]buffer=新字节[is.available()];
//while(is.read(buffer)!=-1);
//String jsontext=新字符串(缓冲区);
JSONArray条目=新的JSONArray(结果);
x=“已解析JSON。\n有[“+条目的.length()+”]\n\n”;
int i;

对于(i=0;i一些建议,它可能有效:

  • 使用HTTPGet而不是HTTPPost
  • 不需要添加标题,删除这两行

  • 试试这些,让我知道:

    一些建议,可能有用:

  • 使用HTTPGet而不是HTTPPost
  • 不需要添加标题,删除这两行
  • 请尝试这些并让我知道:

    尝试以下代码:

    检查日志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();
                 }
            }
        }
           }
    
    公共类列表扩展活动{
    字符串响应数据;
    @凌驾
    创建时的公共void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    新建加载_任务().execute();
    }
    公共类加载任务扩展了异步任务{
    private final ProgressDialog=新建ProgressDialog(List.this);
    //可以在这里使用UI线程
    受保护的void onPreExecute(){
    this.dialog.setMessage(“加载…”);
    this.dialog.setCancelable(false);
    this.dialog.show();
    }
    @凌驾
    受保护的Void doInBackground(Void…arg0){
    //TODO自动生成的方法存根
    试一试{
    HttpClient=new DefaultHttpClient();
    字符串getURL=”http://twitter.com/statuses/user_timeline/krish_hari.json";
    HttpGet=newhttpget(getURL);
    HttpResponse responseGet=client.execute(get);
    HttpEntity-resEntityGet=responseGet.getEntity();
    如果(resEntityGet!=null){
    response_data=EntityUtils.toString(resEntityGet);
    }
    Log.v(“aaaa”和“+响应数据);
    }
    捕获(例外e){
    //TODO自动生成的捕捉块
    e、 printStackTrace();
    }
    返回null;
    }
    @凌驾
    受保护的void onPostExecute(void结果){
    if(this.dialog.isShowing()){
    this.dialog.disclose();
    }
    }
    }
    }
    
    尝试以下代码:

    检查日志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();
                 }
            }
        }
           }
    
    公共类列表扩展活动{
    字符串响应数据;
    @凌驾
    创建时的公共void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    新建加载_任务().execute();
    }
    公共类加载任务扩展了异步任务{
    private final ProgressDialog=新建ProgressDialog(List.this);
    //可以在这里使用UI线程
    受保护的void onPreExecute(){
    this.dialog.setMessage(“加载…”);
    this.dialog.setCancelable(false);
    this.dialog.show();
    }
    @凌驾
    受保护的Void doInBackground(Void…arg0){
    //TODO自动生成的方法存根
    试一试{
    HttpClient=new DefaultHttpClient();
    字符串getURL=”http://twitter.com/statuses/user_timeline/krish_hari.json";
    HttpGet=newhttpget(getURL);
    HttpResponse responseGet=client.execute(get);
    HttpEntity-resEntityGet=responseGet.getEntity();
    如果(resEntityGet!=null){
    response_data=EntityUtils.toString(resEntityGet);
    }
    Log.v(“aaaa”和“+响应数据);
    }
    捕获(例外e){
    //TODO自动生成的捕捉块
    e、 printStackTrace();
    }
    返回null;
    }
    @凌驾
    受保护的void onPostExecute(void结果){
    if(this.dialog.isShowing()){
    this.dialog.disclose();
    }
    }
    }
    }
    
    我使用此代码检索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]
    是JSON提要的url

    您必须重新设置URL的格式,您现在使用的格式已被弃用


    请参阅

    我使用此代码检索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]
    是JSON提要的url

    您必须重新设置URL的格式,您现在使用的格式已被弃用


    请参阅

    您似乎需要添加
    android.permission.INTERNET

    <uses-permission android:name="android.permission.INTERNET" />
    

    您似乎需要添加
    android.permission.INTERNET

    <uses-permission android:name="android.permission.INTERNET" />
    
    
    
    异常抛出在哪一行?如果您不知道,请尝试一步一步地调试。@user1002448您检查了我的帖子吗?@Paresh Mayani未使用。.忘记删除异常抛出在哪一行?如果您不知道,请尝试一步一步地调试。@user1002448您检查了我的帖子吗?@Paresh Mayani未使用。.忘记删除异常出现在org.apache.http.HttpResponse pingResponse=pingclient.execute(pingpost)中;只需在URL中尝试http而不是https,也可以使用HTTPGetTried…仍然相同的麻烦异常出现在org.apache.http.HttpResponse pingResponse=pingclient.execute(pingpost)中;只需在URL中尝试http而不是https,也可以使用HTTPGetTried…仍然