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

时间: 2024-08-07 12:00:28

Android之Http网络编程(二)的相关文章

Android应用开发-网络编程(二)(重制版)

Apache HttpClient框架 GET方式请求提交数据 1. 创建一个HttpClient HttpClient hc = new DefaultHttpClient(); 2. 创建一个HttpGet,要提交给服务器的数据已经拼接在path中 HttpGet hg = new HttpGet(path); 3. 使用HttpClient对象发送GET请求,建立连接,返回响应头对象 HttpResponse hr = hc.execute(hg); 4. 拿到响应头中的状态行,获取状态码

Android之Http网络编程(三)

在前面两篇博客<Android之Http网络编程(一)>.<Android之Http网络编程(二)>中,简单的介绍了对网页的请求和客户端与服务端的简单的参数交互.那么,这一篇博客就来认识一下Android客户端获取服务端返回的数据. 大家都知道客户端与服务端的交互大体过程如下: Android客户端向服务器发出请求. 服务端接收请求并响应. 服务端返回数据给客户端. 对于Android客户端来说,最重要的也就莫过于获取服务端返回的数据来展示了. 那么,首先我们要知道服务端返回的数据

安卓第八天笔记--网络编程二

安卓第八天笔记--网络编程二 1.网络图片查看器 /** * 网络图片查看器 * 1.获取输入的URL地址,判断是否为空 * 2.建立子线程,获取URl对象new URL(path) * 3.打开连接获取HttpURLConnection conn = (HttpURLConnection) url.openConnection(); * 4.设置连接超时时间conn.setConnectionTimeOut(5000)毫秒 * 5.设置请求方式setRequestMethod * GET或者P

Android之Http网络编程(一)

Android应用作为一个客户端程序绝大部分都是需要进行网络请求和访问的,而http通信是一种比较常见并常用的通信方式. 在Android中http网络编程中有两种实现方式,一种是使用HttpURLConnection,另一种就是使用HttpClient. 这两种实现方式的大体过程都是: Android客户端向服务器发出请求. 服务端接收请求并响应. 服务端返回数据给客户端. 在Http通信中有POST和GET两种方式,其不同之处在于GET方式可以获得静态页面,同时可以将请求参数放在URL字符串

Linux网络编程(二)

服务套和客户机的信息函数 1.字节转换函数 在网络上面有着许多类型的机器,这些机器在表示数据的字节顺序是不同的, 比如i386芯片是低字节在内存地址的低端,高字节在高端,而alpha芯片却相反. 为了统一起来,在Linux下面,有专门的字节转换函数. unsigned long int htonl(unsigned long int hostlong)     unsigned short int htons(unisgned short int hostshort)     unsigned

winform网络编程(二)

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

网络编程(二)

网络编程(二)    >>>思维导图>>>中二青年 基于TCP协议的Socket套接字 server端 import socket sk = socket.socket() sk.bind(('127.0.0.1',8898)) # 把地址绑定到套接字 sk.listen() # 监听链接 conn,addr = sk.accept() # 接受客户端链接 ret = conn.recv(1024) # 接收客户端信息 print(ret) # 打印客户端信息 conn

C#网络编程二:Socket编程

一:什么是SOCKET socket的英文原义是"孔"或"插座".作为进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄(其实就是两个程序通信用的).socket非常类似于电话插座.以一个电话网为例:电话的通话双方相当于相互通信的2个程序,电话号码就是ip地址.任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket:同时要知道对方的号码,相当于对方有一个固定的socket.然后向对方拨号呼叫

Android系列之网络(二)----HTTP请求头与响应头

?[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4005034.html 联系方式:[email protected] [正文] 国庆佳节,习惯并享受着一个人独霸整个教研室的感觉. 在上一篇文章中,我们学习到了如何使用HttpClient发送HTTP请求.博文链接: Android系列之网络(一)----使用HttpClient发送HTTP请求

Java网络编程二:Socket详解

Socket又称套接字,是连接运行在网络上两个程序间的双向通讯的端点. 一.使用Socket进行网络通信的过程 服务端:服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户端的连接请求. 客户端:客户端程序根据你服务器所在的主机名和端口号发出连接请求. 两者之间的通信是通过Socket完成的,我们可以认为Socket是两个城市之间的交通工具,有了它,就可以在两个城市之间穿梭了. Socket通信示例 主机A的应用程序和主机B的应用程序通信,必须通过Socket建立连接,而建立