Android基于HTTP网络编程总结浅析

</pre>首先,我们都知道现在Android网络编程只需要利用AfinalHTTP框架很简单的就可以实现。但是我还是想把Android原生的网络编程总结一下,毕竟万变不离其宗。</h3><h3>声明:本人初学,只是写出了知其然却没有知其所以然(即本人也不是太了解具体的实现原理,只是会用。大神们可以绕了。。)</h3><h3>一,前提:注意对网络的访问不可以在主线程中(耗时,以免阻塞)可以利用AsyncTask,即异步处理机制。亦或Handler+Thread机制进行线程之间的通信。</h3><h3><span style="font-size:12px">二,其实也可以利严苛模式(只需要几句简单的代码),就可以在UI线程进行网络的访问了,不过不推荐这种。</span></h3><h3>好了,进入主题。</h3><h3>Android中的网络编程,我把它分为两类,一类是Scoket编程,一类HTTP编程。Scoket编程我是自学,在此不多讲。说一下HTTP编程</h3><h3>HTTP是超文本传输协议的缩写,用来传输超文本数据。Android提供了HttpURLConnection和HttpClient两个接口开发访问程序的接口。</h3><h3><span style="color:#ff0000">1:这种方式通过URL</span></h3><h3><span style="color:#ff0000">HttpURLConnection继承URLConnection类,两个都是抽象类,无法背直接实例化。通过URL中的openConnection方法获得实例</span></h3><div><pre name="code" class="html" style="font-size: 14px; font-weight: bold;">1)创建一个URL对象

URL url = new URL(http://www.baidu.com);  //URL可以为一个Servlet地址。

2)利用HttpURLConnection对象从网络中获取网页数据

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

3)设置连接超时

conn.setConnectTimeout(6*1000);

4)对响应码进行判断

if (conn.getResponseCode() != 200)    //从Internet获取网页,发送请求,将网页以流的形式读回来

throw new RuntimeException("请求url失败");

5)得到网络返回的输入流

InputStream is = conn.getInputStream();

6)把输入流转化为字节数组  

byte data[]=take(is) //我写了一个名字叫take方法,用来把流转化为数组,很简单,略 有空我会来完善的

7)吧数组转化为字符串  

String b=new String(data);

此时,b就是服务器端给你传送的东西。已经完毕,你如果想要传送对象信息,可以利用Gson解析。

2:这种方式通过HttpClient,值得一提在Android网络编程中,这种更适合,他有Get 以及Post两种方法(post可以传文件到服务器,但是一般情况我用Get)

   Get方式:

 1)HttpClient client=new DefaultHttpClient(); //DefaultHttpClient帮助我们创建一个HttpClient

 2)HttpGet get=new HttpGet( http://www.baidu.com);//你的Servlet地址,你可以带一些参数过去,比如 " http://www.baidu.com"+username;

 3)HttpResponse response=client.execute(get);

 4) if(response.getStatusLine().getStatusCode(0==200) {  //响应 Ok

 5) HttpEntity entity=response.getEntity; //响应数据的内容

 6)String msg=EntityUtils.toString(entity,"utf-8");

此时,msg就是服务器端给你传送的东西。已经完毕,你如果想要传送对象信息,可以利用Gson解析。














你可能感兴趣的:(android,网络编程)