`

客户端访问服务器批量显示数据

 
阅读更多

批量获取服务器的信息,显示在本地  不向服务器发信息直接获取

定义一个类,访问服务器并显示在这个页面显示在一个简单的ListView里面

访问服务器的类

定义初始化

//显示信息的ListView	
private ListView lv_leave;
//填充访问服务器类的Adapter	
LeaveInfoAdapter lva;
ArrayList<LeaveInfo> list = new ArrayList<LeaveInfo>();

 

在onCreate方法里面开始访问

                setContentView(R.layout.leave_show);
		lv_leave = (ListView) findViewById(R.id.leave_show_list);

		try {
			 
                       //将访问服务器获取到的值都保存在list里面
			list = JSONUtil.postRequest("http://172.16.10.131:8080/workflow/workapprove!phoneFindStatus02.action");

              //然后将这个list传给填充访问服务器类的Adapter
			lva = new LeaveInfoAdapter(list, this);

//将Adapter赋值给ListView
        	         lv_leave.setAdapter(lva);
			 
		} catch (Exception e) {
			System.out.println("网络异常");
			e.printStackTrace();
		}

 

JsonUtil解析将获取到的值保存在一个list里面并传到访问服务器类里面定义的list里面

 

public class JSONUtil {
	private static final String TAG = "JSONUtil";

	/**
	 * 获取json内容
	 * 
	 * @param url
	 * @return JSONArray
	 * @throws JSONException
	 * @throws ConnectionException
	 */
	public static JSONObject getJSON(String url) throws JSONException,
			Exception {

		return new JSONObject(getRequest(url));
	}

	/**
	 * 向api发送get请求,返回从后台取得的信息。
	 * 
	 * @param url
	 * @return String
	 */
	protected static String getRequest(String url) throws Exception {
		return getRequest(url, new DefaultHttpClient(new BasicHttpParams()));
	}

	protected static ArrayList<LeaveInfo> postRequest(String url)
			throws Exception {
		return postRequest(url, new DefaultHttpClient());
	}

	/**
	 * 向api发送get请求,返回从后台取得的信息。
	 * 
	 * @param url
	 * @param client
	 * @return String
	 */
	protected static String getRequest(String url, DefaultHttpClient client)
			throws Exception {
		String result = null;
		int statusCode = 0;
		HttpGet getMethod = new HttpGet(url);
		Log.d(TAG, "do the getRequest,url=" + url + "");
		try {
			// getMethod.setHeader("User-Agent", USER_AGENT);
			HttpResponse httpResponse = client.execute(getMethod);
			 statusCode = httpResponse.getStatusLine().getStatusCode();
			Log.d(TAG, "statuscode = " + statusCode);
		 
			result = retrieveInputStream(httpResponse.getEntity());
			 
		} catch (Exception e) {
			Log.e(TAG, e.getMessage());
			throw new Exception(e);
		} finally {
			getMethod.abort();
		}
		return result;
	}

	protected static ArrayList<LeaveInfo> postRequest(String url,
			DefaultHttpClient client) throws Exception {
		String result = null;
		int statusCode = 0;
		 ArrayList<LeaveInfo> list = new ArrayList<LeaveInfo>();
		HttpPost getMethod = new HttpPost(url);
		Log.d(TAG, "do the postRequest,url=" + url + "");
		try {
			// getMethod.setHeader("User-Agent", USER_AGENT);
			HttpResponse httpResponse = client.execute(getMethod);
			// statusCode == 200 正常
			statusCode = httpResponse.getStatusLine().getStatusCode();
			Log.d(TAG, "statuscode = " + statusCode);
			// 处理返回的httpResponse信息
			if (statusCode == 200) {

				HttpEntity entity = httpResponse.getEntity();
				result = retrieveInputStream(entity);
				
				 
				JSONArray jsonArray = new JSONArray(result );
				System.out.println(jsonArray);
				for (int i = 0, size = jsonArray.length(); i < size; i++) {
					LeaveInfo bean = new LeaveInfo();
					JSONObject jsonObject = jsonArray.getJSONObject(i);

					bean.setId(jsonObject.getInt("id"));
					bean.setApplyname(jsonObject.getString("applyname"));
					bean.setApplytime(jsonObject.getString("applytime"));
					bean.setReason(jsonObject.getString("reason"));
					bean.setStatus(jsonObject.getString("status"));
					list.add(bean);
				}
				 
				
			}

		} catch (Exception e) {
			// Log.e(TAG, e.getMessage());
			throw new Exception(e);
		} finally {
			// getMethod.abort();
		}
		return list;
	}

	/**
	 * 处理httpResponse信息,返回String
	 * 
	 * @param httpEntity
	 * @return String
	 */
	protected static String retrieveInputStream(HttpEntity httpEntity) {

		int length = (int) httpEntity.getContentLength();
		// the number of bytes of the content, or a negative number if unknown.
		// If the content length is known but exceeds Long.MAX_VALUE, a negative
		// number is returned.
		// length==-1,下面这句报错,println needs a message
		if (length < 0)
			length = 10000;
		StringBuffer stringBuffer = new StringBuffer(length);
		try {
			InputStreamReader inputStreamReader = new InputStreamReader(
					httpEntity.getContent(), "UTF-8");
			char buffer[] = new char[length];
			int count;
			while ((count = inputStreamReader.read(buffer, 0, length - 1)) > 0) {
				stringBuffer.append(buffer, 0, count);
			}
		} catch (UnsupportedEncodingException e) {
			Log.e(TAG, e.getMessage());
		} catch (IllegalStateException e) {
			Log.e(TAG, e.getMessage());
		} catch (IOException e) {
			Log.e(TAG, e.getMessage());
		}
		System.out.println("resulte:" + stringBuffer.toString());
		return stringBuffer.toString();
	}

}

 填充访问服务器类的Adapter

 

public class LeaveInfoAdapter extends BaseAdapter {
	List<LeaveInfo>  list;
	Context mcontext;

	public LeaveInfoAdapter(List<LeaveInfo> list, Context context) {

		this. list = list;
		this.mcontext = context;
	}

	public void setResult(List<LeaveInfo> list, Context context) {
		this. list = list;
		this.mcontext = context;
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return list.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return  list.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		if (convertView == null) {
			LayoutInflater inflater = LayoutInflater.from(mcontext);
			convertView = inflater.inflate(R.layout.leave, null);
		}
		TextView tv_name = (TextView) convertView.findViewById(R.id.leave_name);
		tv_name.setText( "姓名:"+list.get(position).getApplyname());
		TextView tv_time = (TextView) convertView.findViewById(R.id.leave_time);
		tv_time.setText("请假时间"+ list.get(position).getApplytime());
		TextView tv_reason = (TextView) convertView
				.findViewById(R.id.leave_reason);
		tv_reason.setText( "请假原因"+list.get(position).getReason());
		TextView tv_status = (TextView) convertView
				.findViewById(R.id.leave_status);
		tv_status.setText( "状态:"+list.get(position).getStatus());

		return convertView;
	}

}

 

LeaveInfo 实体对象

 

public class LeaveInfo {

private int id ;
private String applyname  ;
private String applytime  ;
private String reason ;
private String status  ;
然后是Getters跟Setters方法
有参构造方法跟无参构造方法

}

 然后就是定义一个leave_show.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    
<ListView 
    android:id="@+id/leave_show_list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"></ListView>
</LinearLayout>

 

定义一个填充Adapter的XMl        leave.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
 
    <TextView
        android:id="@+id/leave_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />

    <TextView
        android:id="@+id/leave_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    <TextView
        android:id="@+id/leave_reason"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
          />

    <TextView
        android:id="@+id/leave_status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />
 
</LinearLayout>

 

以上代码就是android客户端直接访问服务器获取数据并显示在本地的ListView的实例

分享到:
评论

相关推荐

    OPC客户端、服务器的实现

    - **OPC客户端**:通过OPC服务器访问数据的软件,它可以是HMI(人机界面)、SCADA(监控和数据采集)系统或其他需要工厂数据的应用程序。 2. **OPC服务器实现** - **服务器注册**:在实现OPC服务器时,需要首先在...

    SQL2000服务器与客户端数据传递.zip_SQL2000服务器与客户端数据传递

    总结来说,"SQL2000服务器与客户端数据传递"的主题涵盖了数据库连接、数据访问技术、网络通信协议、数据操作语言、数据传输工具以及安全性等多个层面的知识。通过学习和实践,开发者能够更好地理解和掌握SQL Server ...

    web客户端访问工具

    这个名为"web客户端访问工具"的项目,是由用户自行编写的一个基于Java的.jar工具包,其主要目的是为了练习Web请求的访问和数据的分析。在这个简单的应用中,我们可以深入探讨几个关键的IT知识点。 首先,Java语言是...

    VB网络数据库编程服务器与客户端

    本项目“VB网络数据库编程服务器与客户端”着重于通过VB实现服务器和客户端之间的数据通信,以实现高效、可靠的数据库应用。 首先,我们要了解VB中的数据库访问技术。在VB中,最常用的是ADO(ActiveX Data Objects...

    服务器批量下载工具

    总的来说,服务器批量下载工具是IT专业人士不可或缺的助手,无论是在内容管理、数据分析还是网络备份等方面都有广泛应用。了解如何正确使用这些工具,并掌握相关的FTP和Web知识,将极大地提升你在工作中的效率和专业...

    FTP 服务器和客户端程序

    它分为服务器端和客户端两个组件,使得用户可以远程访问并管理其他计算机上的文件。本篇将深入探讨FTP服务器和客户端程序的工作原理、配置及应用。 一、FTP服务器 FTP服务器是提供文件存储和访问服务的软件,它监听...

    服务器批量管理

    例如,Mstsc服务器批量管理.exe可能就是一个基于Microsoft的远程桌面连接客户端(mstsc)开发的增强型工具,能够批量连接并管理Windows服务器。这样的工具通常具备以下功能: 1. **多服务器连接**:支持一次性添加...

    C#访问OPC读取数据

    在实际开发中,还需要注意OPC通信的异步性质,确保线程安全,以及考虑性能优化,如批量读取和缓存数据。此外,根据具体需求,可能还需要实现OPC数据的写入、订阅更新和历史数据查询等功能。 总结来说,C#访问OPC...

    opc 客户端c#编写(数据同时存入mysql数据库)

    为了实现C#与MySQL的连接,开发者通常会使用ADO.NET框架,这是一个用于访问数据库的.NET组件,它提供了数据提供者(如MySQL Data Provider for .NET),可以实现与MySQL服务器的连接、查询、事务处理等功能。...

    基于.NET Framework的OPC数据访问服务器的研究与设计.pdf

    本文设计了一个基于.NET Framework的OPC数据访问服务器框架,该框架包括OPC服务器、数据访问接口、设备驱动程序和客户端应用程序四个部分。OPC服务器封装了设备的驱动程序,客户开发人员只能看到OPC服务器提供的统一...

    实现上传文件到客户端和服务器功能

    在安卓应用开发中,实现文件上传到服务器的功能是一项常见的需求,这对于数据共享、备份和同步至关重要。本教程将深入探讨如何构建一个安卓应用程序,允许用户选择本地文件并将其上传到服务器,供其他安卓用户下载...

    实例:往服务器中读写数据

    任何直接对服务器文件系统的无限制访问都可能导致安全风险。因此,需要确保只有授权的用户或服务才能执行这些操作,并且应该遵循最小权限原则,只给予完成任务所需的最小权限。 此外,考虑到性能和效率,我们通常会...

    JAVA AJAX 图片批量上传并返回上传后的文件路径在客户端显示预览

    本教程将探讨一个基于JAVA AJAX的图片批量上传解决方案,该方案包括客户端的交互与服务器端的处理,以及如何在客户端预览上传后的图片。 首先,我们要理解AJAX(Asynchronous JavaScript and XML)的核心概念。AJAX...

    Qt实现的opc客户端

    OPC DA主要用于实时数据访问,而OPC HDA处理历史数据,OPC AE处理报警和事件。在本项目中,我们主要关注OPC DA,用于从OPC服务器读取和写入实时数据。 3. **QOpc库** Qt本身并不直接支持OPC,但可以借助第三方库...

    python多线程批量访问url脚本

    本项目中的"python多线程批量访问url脚本"正是基于这个理念设计的。 该脚本采用了第三方库`grequests`,它是`requests`库的一个并行版本,能够支持异步的HTTP请求。`requests`库是Python中广泛使用的HTTP客户端,而...

    redis官网最新客户端

    10. **安全设置**:客户端也可能包含管理Redis服务器认证和授权的功能,比如设置和修改密码、管理访问控制列表。 综上所述,"redis官网最新客户端"提供了全面的Redis操作功能,不仅便于日常的数据操作,还为开发和...

    sql 客户端 工具 Oracle9i客户端精简版 V3.0

    Oracle9i客户端精简版V3.0是一款专为数据库管理设计的专业工具,主要用于与Oracle数据库服务器进行交互,提供了一套全面的SQL命令行界面和图形化用户界面(GUI),帮助用户执行SQL查询、数据操作、数据库管理和开发...

    Win7 XP LDAP服务器 客户端软件

    标题中的“Win7 XP LDAP服务器 客户端软件”指的是在Windows 7和Windows XP操作系统上使用的Lightweight Directory Access Protocol(轻量级目录访问协议)的服务器和客户端软件。LDAP是一种用于访问和管理分布式...

    SQL Server Native Client 客户端

    - 数据分析与报表:数据分析工具或报表服务器可以利用SQLNCLI与SQL Server进行数据交互。 总的来说,SQL Server Native Client是一个强大的数据库访问工具,对于需要与SQL Server进行深度交互的开发者来说,它提供...

    基于Ajax和Json的批量数据传递.pdf

    **Ajax与Json在批量数据传递中的应用** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新,提高...

Global site tag (gtag.js) - Google Analytics