`
wen742538485
  • 浏览: 241832 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android 定时到服务器取数据并刷新

阅读更多
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class Test extends Activity implements Runnable{
    /** Called when the activity is first created. */
        private Button btn_get = null;
        private Button btn_post = null;
        private TextView tv_rp = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btn_get = (Button) this.findViewById(R.id.Button01);
        btn_post = (Button) this.findViewById(R.id.Button02);
        tv_rp = (TextView) this.findViewById(R.id.TextView);
        btn_get.setOnClickListener(new Button.OnClickListener(){

                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                String httpUrl = "http://192.168.0.132:8080/Android/httpreq.jsp?par=request-get";
                                HttpGet request = new HttpGet(httpUrl);
                                HttpClient httpClient = new DefaultHttpClient();
                                try {
                                        HttpResponse response = httpClient.execute(request);
                                        if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
                                                String str = EntityUtils.toString(response.getEntity());
                                                tv_rp.setText(str);
                                        }else{
                                                tv_rp.setText("请求错误");
                                        }
                                } catch (ClientProtocolException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();       
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                        }
               
        });
        btn_post.setOnClickListener(new Button.OnClickListener(){

                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                String httpUrl = "http://192.168.0.132:8080/Android/httpreq.jsp";
                                HttpPost request = new HttpPost(httpUrl);
                                List<namevaluepair> params = new ArrayList<namevaluepair>();
                                params.add(new BasicNameValuePair("par","request-post"));
                                try {
                                        HttpEntity entity = new UrlEncodedFormEntity(params, "UTF-8");
                                        request.setEntity(entity);
                                        HttpClient client = new DefaultHttpClient();
                                        HttpResponse response = client.execute(request);
                                        if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
                                                String str = EntityUtils.toString(response.getEntity());
                                                tv_rp.setText(str);
                                        }else{
                                                tv_rp.setText("请求错误");
                                        }
                                } catch (UnsupportedEncodingException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                } catch (ClientProtocolException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                        }
               
        });
        new Thread(this).start();
    }
    public void refresh(){
            String httpUrl = "http://192.168.0.132:8080/Android/httpreq.jsp";
            try {
                        URL url = new URL(httpUrl);
                        HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
                        urlConn.connect();
                        InputStream input = urlConn.getInputStream();
                        InputStreamReader inputreader = new InputStreamReader(input);
                        BufferedReader reader = new BufferedReader(inputreader);
                        String str = null;
                        StringBuffer sb = new StringBuffer();
                        while((str = reader.readLine())!= null){
                                sb.append(str).append("\n");
                        }
                        if(sb != null){
                                tv_rp.setText(sb.toString());
                        }else{
                                tv_rp.setText("NULL");
                        }
                        reader.close();
                        inputreader.close();
                        input.close();
                        reader = null;
                        inputreader = null;
                        input = null;
                } catch (MalformedURLException e) {
                        e.printStackTrace();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
    }
    public Handler handler = new Handler(){
            public void handleMessage(Message msg){
                    super.handleMessage(msg);
                    refresh();
            }
    };
        public void run() {
                // TODO Auto-generated method stub
                while(true){
                        try {
                                Thread.sleep(1000);
                                handler.sendMessage(handler.obtainMessage());
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
        }
}


</namevaluepair></namevaluepair>
分享到:
评论

相关推荐

    Android中使用的定时针(刷新页面请求服务器)详解

    在Android开发中,有时我们需要定期从服务器获取更新的数据来刷新页面,这通常涉及到定时任务的实现。本篇文章将深入探讨如何在Android中使用定时器(Timer)来实现每5秒请求一次服务器并刷新页面。 首先,我们需要...

    Android token过期刷新处理的方法示例

    Android Token 过期刷新处理方法示例 Android Token 过期刷新处理是移动端应用程序中常见的问题之一。当用户的 Token 过期时,应用程序需要重新刷新 Token,以确保用户的身份验证。下面是 Android Token 过期刷新...

    popupwin 无刷新读取数据库信息

    Popupwin是一种技术手段,常用于Web开发中,它允许在不刷新整个页面的情况下,弹出一个新的窗口或层来显示从服务器获取的数据。这种方式提高了用户体验,因为它避免了页面刷新导致的中断,使得用户能够连续地进行...

    Android下拉刷新,自动刷新demo

    首先,下拉刷新(Pull-to-Refresh)是一种用户界面设计模式,当用户滚动到列表顶端并继续向下拉动时,会触发刷新操作,通常伴随着一个刷新指示器,如旋转的菊花或刷新状态的文字提示。这种功能在新闻、社交网络和...

    Android中的API数据应用(以AQI为例)

    在Android开发中,API数据应用...通过这个AQI实例,开发者可以学习到如何与远程服务器交互,获取并处理JSON数据,以及在Android应用中展示这些数据。这不仅是Android开发的基本技能,也是构建各种类型应用程序的基石。

    android AppWidgetProvider httpclient 扒取网页

    总结起来,这个项目涉及到Android AppWidgetProvider的使用,通过HttpClient从web服务器获取数据,解析HTML,更新Widget显示,设置定时刷新,以及使用Notification进行交互。这些知识点涵盖了Android应用开发中的多...

    Android 广播、服务、对话框直接交互demo

    在这个"Android 广播、服务、对话框直接交互demo"中,开发者通过一个具体的场景展示了如何运用这些组件来实现实时数据更新并呈现给用户。 首先,让我们详细了解一下这三个组件: 1. **广播(BroadcastReceiver)**...

    android 整理代码笔记

    3. **Client**: 在Android中,Client通常指的是客户端应用,可能是实现与服务器进行数据交换的应用部分。这涉及到网络请求、JSON解析、HTTPS安全通信等技术,例如使用OkHttp或Retrofit库进行网络请求。 4. **Music_...

    Android 微博实时热点获取(GET)网络请求

    在Android开发中,获取微博实时热点是常见的需求,这通常涉及到网络请求和数据刷新机制。本文将详细解析如何实现“Android 微博实时热点获取(GET)网络请求”这一功能,包括自动刷新和下拉刷新两种策略。 首先,...

    android rss阅读器源码

    为了保持数据的新鲜度,源码中可能包含自动或手动刷新RSS feed的机制,例如定时任务或者下拉刷新手势。 10. **响应式布局**: 为适应不同尺寸的屏幕,源码可能采用了响应式布局设计,如`ConstraintLayout`或`...

    基于Android平台的天气预报项目源代码

    此外,项目中可能涉及到Android的权限管理,如读取位置权限,这需要在`AndroidManifest.xml`中声明,并在运行时根据Android的不同版本使用` ActivityCompat.requestPermissions()`处理权限请求。 对于数据存储,...

    Android面试题总结

    为了保持长连接,Android开发者通常使用AlarmManager来定时刷新连接。AlarmManager可以设置RTC(实时时钟)闹钟,在指定时间唤醒CPU。使用AlarmManager比Timer更节能,因为它可以在CPU休眠时工作,仅在必要时唤醒...

    天气预报 Android

    - 数据刷新:设定定期更新机制,如每天定时获取最新天气信息。 8. **测试与调试**: - 单元测试:对各个模块进行独立验证,确保其功能正确。 - Espresso UI测试:检查UI交互和视图状态。 - Android模拟器和真机...

    基于Android系统实现的天气预报简单实例

    在Android平台上实现一个天气预报应用是一项常见的开发任务,它涉及到网络请求、数据解析、UI设计等多个方面的技术。本文将深入探讨如何基于Android系统构建一个简单的天气预报实例。 首先,我们需要理解Android...

    Android团购信息源代码.zip

    数据通常以JSON或XML格式传输,应用需要解析这些数据并填充到UI中。 4. **数据处理**:为了提高用户体验,部分团购信息可能会缓存在本地,例如SQLite数据库或SharedPreferences存储。此外,应用可能需要处理用户的...

    android机票查询

    在Android平台上开发一款机票查询应用是一项常见的任务,它涉及到网络通信、数据解析、用户界面设计以及本地存储等多个技术环节。本应用的核心功能是通过Web服务接口获取机票信息,并且能够实时更新,同时还能将查询...

    安卓课程表包含服务器端

    在这款应用中,用户不仅可以查看单双周的课表,还能定位到特定的学习周,享受课前自动提醒服务,并且能够将个人的课表信息存储在服务器上,确保数据的安全性和可访问性。以下是对这个项目中涉及到的主要知识点的详细...

    黑马程序员_2小时教你写一个android程序[第05天]课件源码

    7. **刷新机制**:可以添加下拉刷新或定时更新功能,让用户手动或自动获取最新天气数据。 通过这个2小时的教程,你将学到如何结合以上知识点,从零开始构建一个完整的Android天气预报应用。实践这些技能将为你...

    Android高仿网易新闻客户端

    5. **Adapter**:连接数据源和视图,将数据转化为适配器可以理解的格式,然后填充到RecyclerView中,实现新闻列表的展示。 6. **JSON解析**:通常使用Gson或Jackson库将服务器返回的JSON数据转换为Java对象,便于...

Global site tag (gtag.js) - Google Analytics