Android手机访问服务器的
一种数据交互方法
                                    曾鑫
摘要:本文通过对Android手机访问Web服务器的API的分析和实践,提出了一种解决手机终端和Web服务器交互提取各种类型数据的清晰有效方法,扩展了Android平台在访问Web服务器进行交互时的解析数据能力,给移动商务软件开发人员在开发数据交互实践过程提供了参考。
    词:Android;手机终端;3G; 数据流; 过滤流;Servlet; SSH架构; POST方法 ;GET方法; XML;
数据库  
中图分类号:TP393.02        文献标识码: A                    文章编号:
            An Effective Data Interactive Method From
Android Cell Phone Accessing Web App Server
                            BAI  Yonglin
Information & Modern Education Technique Center ,Xi’an University Of Finance and Economics , Xi’an 710061, China
Abstract This paper, through the analysis and practice of Android API access to Web App Server, puts forward a data interactive method, which is clearly and effectively used to get the data of the different types from Web App Server, and expend the data interactive ability between the Cell Phone and Web App Server, and also provide reference for those who is engaged in Mobile business software development.
Key wordsAndroidCell Phone3G; DataStream; Filter FlowServlet; SSH; POST ;GET; XML;
          Database
1引言
为了让手机用户能够在任何时候(Anytime)、任何地方(Anywhere)、以任何方式(Anyway)查询企业所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端,手机通过移动网和互联网访问企业Web网站并处理各项业务(移动商务系统)。从市场的角度来讲。将企业提供的服务通过现代的先进技术拓展到手机终端,是一项具有极大潜在的市场需求。由此可见,能够给手机终端提供有效、便捷和清晰地访问Web服务器数据的方法在实际中非常有用。特别是随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。Google为此于200711月推出了一个专为移动设备设计的软件平台———Android,它是一套真正意义上的开放性移动设备综合平台,其包括操作系统、中间件和一些关键的平台应用(见图1)。Android最大特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验, Android里面具有非常丰富的图形组建, 对多媒体的支持功能和非常强大的浏览器[1]Android平台的开放性等特点既能促进技术(包括平台自身)的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定特化的产品,因此,它具有很大的市场发展潜力。谷歌的Android手机操作系统在发布以后,每年的Android手机上市速度惊人,预计在不久将来大有占据手机大份额市场的可能,Android手机应用程
序是以XML文件作为其界面和数据的描述文件,对于每一个组件和数据都有唯一的R.java文件标识,根据这些标识来加载和确定组件对象,进而通过事件来驱动事务,Android的重要技术是提供了一套API来解析这些XML描述文件,编写的程序紧凑、数据安全,界面丰富,交互模式多样化,应用程序架构清晰,同时也比较抽象,对开发人员要求比较高。但是由于Android发布的是新技术,难免在实际应用中还存在发展的空间,有些方面还需要进一步完善,需要在市场中不断开发新的技术结合Android提供的API,将开发的应用程序更加安全、完美和有效。为此,笔者经过对Android提供的API访问Web服务器进行数据通信进行了系统研究,认为Android提供的技术在框架上很大的优势,但在具体取数据和发数据的细节上还需要增加新的技术来弥补。为此,本文笔者就开发Android手机软件过程中创建的数据交换和提取不同类型数据的方法和过程进行了阐述,为开发者提供参考。
                  1  Android系统架构图(Android System Architecture
2 Android手机访问Web服务器技术架构
大多数中间件技术开发人员熟悉如何用计算机浏览器访问互联网,浏览器的主要作用是给
互联网的WEB 服务器提交数据、验证数据、和解析显示数据。其工作原理是通过Http协议、提交数据用GET或者POST方法,客户端的数据通过浏览器网页提交给Web应用服务器,应用服务器通过Web页面接收各种不同类型数据,将数据通过服务器的Servlet子类HttpServlet对象提交给服务器端处理逻辑,服务器逻辑将接收到的数据按照客户端的要求在Web 服务器端进行运算,再将运算的结果返回给客户端浏览器进行解析和显示。这里关键是Web服务器端的Servlet,它是服务器和客户端交互数据的服务器端端口,即所有客户端的数据都要通过Servlet提交给Web服务器,所有要返回给客户端的数据都要通过Web服务器端的Servlet响应给客户端。在实际应用的服务器端,我们会创建Servlet的子类对象HttpServlet[2]HttpServletRequestHttpServletResponse),分别用来接收客户端的数据和将数据返回给客户端。
现在的问题就就在Android手机终端了,我们如何能够把客户的数据通过手机界面提交给Web 服务器?Android手机终端访问Web服务器的技术架构是怎样的?又如何能够在手机终端把Web服务器响应的数据按照服务器的不同数据类型恢复原型?这就是下面要解决的问题。
2.1 手机客户端向Web应用服务器发送请求信息
下面以者实际开的Android手机终端登录功能为案例来介绍如何利用Sun公司提供的java数据流和过滤流结合Android提供的API来提取来自Web服务器端不同类型的数据。
1)首先引用所需要的各种API
web端登录Android手机终端开发应用程序时,首先需要利用GoogleSun公司提供的必要类包(API),包括Http通信协议下的类org.apache.http.*;手机端端类org.apache.http.client.*;消息类org.ssage.*; 数据流类java.io.*;交互界面类java.util.*; android.app.Activity;操作描述类t.*;键值处理类android.os.Bundle;日志类android.util.Log;显示组件类android.view.*;和界面类android.widget.*等。
2)定义访问网站的URL
public class UriAPI {
public static final String  TTPCustomer
="192.168.157.100:8028/JSHWDemo/servlet/CustomerServlet";}
3)创建Android程序界面类
下面创建一个手机界面,需要继承Android提供的Activity类,在该类中创建提交给Web服务器的数据的HttpPost对象,覆盖Activity类的方法onCreate(Bundle b),创建事件OnClickListener对象,在其中实现onClick(View v)方法,再把该事件注册到相应的事件源loginButton上。主要代码如下,
public class LoginActivity extends Activity {
    private static final int REQUEST_CODE = 2;
    HttpPost httpRequest=new HttpPost(UriAPI.HTTPCustomer);
    Button loginButton;
    Button cancael;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      loginButton=(Button) findViewById(R.id.login);
//注册对象
      loginButton.setOnClickListener(new OnClickListener(){
            CharSequence username="";
            CharSequence password="";
        public void onClick(View v)
            {
            //下面准备需要提交的数据,从手机界面抓取下来
            EditText ev_username=(EditText)findViewById(R.id.username);
            username=Text();
            EditText ev_password=(EditText)findViewById(R.id.p_w);
            password=Text();
         
4)创建HttpPost对象
    HttpPost对象的主要作用是将Android手机端的数据提交给Web应用服务器,为此Android提供了很好的API,我们就利用AndroidSun公司提供的这些类把需要提交给服务器的数据(NameValuePair对象)保存到一个List对象中,主要代码如下,

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。