Android client与server数据交互process

via #Testin杯#Android客户端与服务器数据交互流程

android获取web服务器端session并验证登陆 二

Android客户端,也是有UI设计师,UI前端,程序构成的;

同样程序这边的话,最近Html5+CSS3的火热开启,很多公司也需要html5+css3进行Android程序的开发了。其实木有必要弄清楚网站的建站过程,这里只是给大家普及一下知识:

Http协议是基于TCP协议的,而TCP协议是一种有连接,可靠的传输协议,如果丢失的话,会重传。所以这样的话,就不会有数据的丢失了。
Http协议有三种方法,Get,Post,Head方法,但是用的多的只有GetPost方法,
  • Get方法是将请求参数放在请求头中,所以请求的参数在URL中可见,
  • Post方法是将请求参数放在数据部分,所以URL中不可见Post相对来说保密,所以在提交重要信息的时候,用的都是HttpPost方法来实现的,

比如说,注册账号密码就是使用的HttpPost,因为账号密码需要保密,而上百度搜索安卓巴士,在浏览器的地址栏中就会显示这种URL,其中wd=XXX是经过加密后的安卓巴士,其他的参数也是必须要的请求参数http://www.baidu.com/s?wd=%E5%AE%89%E5%8D%93%E5%B7%B4%E5%A3%AB&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&inputT=11996

而在B/S模式中,B代表浏览器,S代表服务器,在浏览器和服务器的通信之中,因为B/S之间不会一直保持连接,所以才会加入Cookie机制,来辨认所操作的对象。
用户浏览网页的操作如下:当用户点击一个连接或者一个按钮的时候,浏览器通过发送一个请求给服务器,然后由服务器接收该请求,然后解析到用户请求的是哪些内容,然后查找到相关资源,再将数据返回给浏览器,由浏览器解析数据,然后显示给用户看到用户所需要看到的页面。
所以,AndroidB/S模式差不多,其实也就是发送请求,接收数据,然后解析数据,显示到手机上的过程,没什么太大的区别,谁让咱用的是互联网,用的是TCP/IP协议呢。要理解是:所有的操作都是向服务器请求数据的过程。

首先,我们要熟悉Android的HttpGet和HttpPost请求。其中Apache公司已经提供了两个类,叫:HttpGet和HttpPost两个类。两个类的用法不同,不解释贴代码:
1. 使用HttpGet请求Baidu的主页:
//使用HttpGet方法,把百度的主页传入
HttpGet hettpGet = new HttpGet(“http://www.baidu.com/”);
//使用默认的HttpClient
HttpClient hc = new DefaultHttpClient();
try {
//执行HttpGet方法,并且获取返回的响应
HttpResponse response = hc.execute(hettpGet);
//如果响应码为200则表示获取成功,否则为发生错误
if (response.getStatusLine().getStatusCode() == 200) {
//s就是获得的HTML代码
String s = EntityUtils.toString(response.getEntity());
System.out.println(s);
}
} catch (ClientProtocolException e)
{
e.printStackTrace();
} catch (IOException e)
{ e.printStackTrace();
}

这样就向百度服务器发送了一个HttpGet请求,请求的是百度的搜索首页,服务器返回来都是Html代码,只是浏览器有解析HTML的功能,将HTML代码转换成所显示的页面,所以,打印出来的都是HTML代码。

//使用HttpPost发送请求
HttpPost httpPost = new HttpPost(url);
//使用NameValuePaira保存请求中所需要传入的参数
List<NameValuePair> paramas = new ArrayList<NameValuePair>();
paramas.add(new BasicNameValuePair(“a”, “a”));
try {

HttpResponse httpResponse;
//将NameValuePair放入HttpPost请求体中
httpPost.setEntity(new UrlEncodedFormEntity(paramas,
HTTP.UTF_8));
//执行HttpPost请求
httpResponse = new DefaultHttpClient().execute(httpPost);
//如果响应码为200则表示获取成功,否则为发生错误
if (httpResponse.getStatusLine().getStatusCode() == 200) {
String s = EntityUtils.toString(httpResponse
.getEntity());}
} 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();
}

这样就发送了一个HttpPost请求了。简单吧。所有的获取数据操作基本上都是在HttpGetHttpPost上拓展开的,然后发送了请求之后呢,服务器就会接受到一个请求了,服务器接收到请求就会通过方法来接收到 Android客户端中发送的参数,并且通过后台程序来解析参数,然后通过数据库查找到所需要的信息,然后通过PHP后台将数据处理成JSON数据格式返回给HttpResponseEntity,然后通过EntitiyUtils.toString方法来将Entity转化成为String对象,然后所得到的String对象呢就是一个JSON数据了。接下来的事情就是JSON数据的解析啦。   
最后简单说一下动态建站的过程吧:页面分为两种,一种静态的,一种动态的,现在静态的站基本上都没了,全是动态的了,静态页面全是用Html+CSS写的,只能实现简单的从一个页面打开另外一个页面,没有与服务器进行数据交互的过程,只是进行简单的加载静态页面,不会有数据从数据库里面进行差删改查等操作,并且不用使用模板生成器生成文件,再将文件内容返回给浏览器呢而其中呢,而动态建站的过程就是这样的:首先由发送请求给服务器,然后服务器通过数据库查询数据,然后再将查询出来的数据与模板生成器结合,生成一个.php文件,然后浏览器会将php文件解析成为html然后显示在浏览器上显示。
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

生活在西班牙

自己动手丰衣足食

BlueAsteroid

Just another WordPress.com site

Jing's Blog

Just another WordPress.com site

Start from here......

我的心情魔方

天才遠私廚

希望能做一個分享各種資訊的好地方

语义噪声

西瓜大丸子汤的博客

笑对人生,傲立寰宇

Just another WordPress.com site

Where On Earth Is Waldo?

A Project By Melanie Coles

the Serious Computer Vision Blog

A blog about computer vision and serious stuff

Cauthy's Blog

paper review...

Cornell Computer Vision Seminar Blog

Blog for CS 7670 - Special Topics in Computer Vision

datarazzi

Life through nerd-colored glasses

Luciana Haill

Brainwaves Augmenting Consciousness

槑烎

1,2,∞

Dr Paul Tennent

and the university of nottingham

turn off the lights, please

A bunch of random, thinned and stateless thoughts around the Web

%d bloggers like this: