Android之Http网络编程(二)

上一篇文章简单的介绍了Android中http的两种通信方式,并且分别用获取百度网页做了实例。但是在实际应用中,更多的是客户端通过请求的参数来实现在服务端的具体操作,并最终返回数据给客户端。因为我们不可能对客户端的每一个需要网络请求的操作都单独的设置一个不变的网络地址。

 

(因为我是从.net转过来的还没真正学过java web,所以web方面的代码比较简单,大家见谅。)

下面我们来做一个简单的小例子:(简单的用户登录)

这里我们会使用到tomcat,以及Genimotion获取本地IP的方法。对此完全不熟悉的童鞋请看另一篇博客《Android中Tomcat的简单配置和使用》。

 

首先我们需要完成一个服务器端的代码:

<%@ page contentType="text/html; charset=GBK" language="java"%>
<%
    String param;
    param = request.getParameter("param");
    if (!"".equals(param)||param!=null) {
        if("get".equals(param)){
            out.println("发送GET请求成功");
        }else if("post".equals(param)){
            String content=request.getParameter("content");
            String nickname=request.getParameter("nickname");
            if(content!=null&&nickname!=null){
                nickname=new String(nickname.getBytes("iso-8859-1"),"utf-8");
                content=new String(content.getBytes("iso-8859-1"),"utf-8");
                if(nickname.equals("admin")&&content.equals("123456")){
                    out.println("登陆成功!");
                }
            }
        }
    }
%>

我把这个文件取名为test.jsp,并放在Tomcat的指定的路径下,以便使用Tomcat当作服务器运行test.jsp。
注意:我这里返回的数据是GBK,不是utf-8。

 

接下来,我们来完成Android客户端的代码:

我们在这里使用HttpClient的使用方式:

/**
     * 表单请求实现登录
     */
    public void testParamsHtppClient() {
        new Thread(new Runnable() {
            int i = 0;
            private String str;

            @Override
            public void run() {
                HttpClient client = new DefaultHttpClient();
                //设置路径
                HttpPost request = new HttpPost("http://192.168.1.100:8080/mytest/test.jsp");
                HttpResponse response;
                //设置表单
                List<NameValuePair> params=new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("param", "post"));//请求方式
                params.add(new BasicNameValuePair("nickname", "admin"));//用户名
                params.add(new BasicNameValuePair("content", "123456"));//密码
                try {
                    request.setEntity(new UrlEncodedFormEntity(params, "utf-8"));//设置编码方式
                    response = client.execute(request);
                    if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                        str = EntityUtils.toString(response.getEntity()).trim();
                        
                    }else{
                        str="请求失败";
                    }
                    System.out.println(str);//打印返回结果

                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        }).start();
    }


打开Tomcat服务器,将上面的方法写入Activity的onCreate()方法中。(创建Activity即执行)

运行结果如下:

 

OK,一个小小的与服务器有参数交互的小例子就写完成。相信学过java web的童鞋能比我写得更出色!这样,至少与服务器交互这块,我们可以通过自己写一些简单的代码来实现,不再束缚于学校没有专门针对的学生联系的服务器了。

 

不知不觉就到了凌晨,首先祝福我们伟大的祖国母亲生日快乐!!!

 

DEMO下载:http://download.csdn.net/detail/af74776/7994837

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。