Android是作为智能手机的操作系统,我们开发的应用,大多数也都须要连接网络,通过网络发送数据、获取数据,因此作为一个应用开发人员必须熟悉怎么进行网络訪问与连接。

通常android中进行网络连接通常是使用scoket或者http,http是最多的情况。这里,我来总结下。怎么进行http网络訪问操作。

android是採用java语言进行开发的,android的包中包括java的URLConnection和apache 的httpclient,因此我们能够使用这两个工具进行网络连接和操作。同一时候。为了控制是否同意程序连接网络,我们开发应用时,须要在Manifest文件里配置申请网络连接的权限,代码例如以下。

<uses-permission android:name="android.permission.INTERNET"/>

使用URLConnection连接网络

URLConnection为java.net包中提供的网络訪问。支持http,https,ftp等。进行http连接时。使用HttpURLConnection就可以。演示样例代码例如以下:

URL url = new URL("http://www.android.com/");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
readStream(in); //该方法是我们自己写的,从流中取数据保存到本地。实现从网络获取数据。 finally {
urlConnection.disconnect();
}

向server提交数据时,须要採用POST传输

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
urlConnection.setDoOutput(true); //设置能够上传数据
urlConnection.setChunkedStreamingMode(0); OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
writeStream(out); //该方法时我们自己写的。向输出流中写数据,实现数据上传。 InputStream in = new BufferedInputStream(urlConnection.getInputStream());
readStream(in);
finally {
urlConnection.disconnect();
}

很多其它用法和函数请查看:http://developer.android.com/reference/java/net/HttpURLConnection.html

同一时候HttpsURLConnection的用法请查看:http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html

使用HttpClient

这个呢,我们也能够使用AndroidHttpClient页能够使用apache默认的DeafultHttpClient,两者之间只常见Client不同,其它都一样

创建AndroidHttpClient

AndroidHttpClient httpClient = AndroidHttpClient.newInstance("user-agent");

创建DefaultHttpClient

HttpClient client = new DefaultHttpClient();

GET请求

HttpGet getRequest = new HttpGet("http://blog.isming.me");
try {
HttpResponse response = httpClient.execute(getMethod); //发起GET请求 Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));//获取server响应内容
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

发起POST请求:

//先将要传的数据放入List
params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "Post方法"));
params.add(new BasicNameValuePair("param2", "第二个參数")); try {
HttpPost postMethod = new HttpPost(baseUrl);
postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将參数填入POST Entity中 HttpResponse response = httpClient.execute(postMethod); //运行POST方法
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //获取响应内容 } 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();
}

说明

从上面看到,使用HttpClient更加方便,明了。

只是Android官方给我们的文档说明是建议android2.2及下面版本号建议使用HttpClient,android2.3及以上版本号建议使用HttpURLConnection。

原因是HttpURLConnection时一个轻量级的Httpclient,提供的API比較简单,方便扩展,可是在2.2及曾经版本号中,这个API存在一些bug。在2.3的版本号中,给改动了。

而HttpClient尽管稳定,bug少,可是其提供的API非常多,进行升级和扩展不方便,android团队在提升和优化其方面的积极性不高。

因此,在Android2.2版本号曾经。使用HttpClient时最好的选择。

Android2.3版本号及以后,使用HttpURLConnection时最佳选择。

框架

网络连接是耗时的操作。通常我们不会将其放在UI线程操作。会编写异步线程,将其放在后台线程运行(异步线程操作看这里)。

而网上有一些线程的网络操作框架,能够降低我们的工作量,同一时候我们自己写的好,可能非常多异常处理之类的。没有其向的更加全面。

有轻量的android-async-http

谷歌官方的volley

Square提供的Retrofit

这个能够依据自己项目的须要选择不同的框架,有空我来写写volley的使用(PS:网上已经有用法了。自己百度去),另外两个我的连接中已经有用法了。

ok,完毕!

写的东西不少。可是介绍的不够具体。

假设不清楚的。欢迎与我交流

原文地址:http://blog.isming.me/blog/2014/05/11/use-network-in-android/,欢迎转载,转载请注明出处!

版权声明:本文博主原创文章,博客,未经同意不得转载。

android网络操作使用汇总(http)的更多相关文章

  1. PHP网络操作函数汇总

    PHP网络操作函数汇总 投稿:junjie 字体:[增加 减小] 类型:转载   这篇文章主要介绍了PHP网络操作函数汇总,本文列举了如gethostbyaddr.gethostbyname.head ...

  2. Android网络操作的几种方法

    安卓开发软件:AndroidStudio 服务器软件:Myeclipse+Tomcat 首先无论是哪种方式,安卓手机软件要想联网,必须要申请联网权限(android.permission.INTERN ...

  3. android——网络操作(一)连接网络

    连接网络 一,包含许可 <uses-permissionandroid:name="android.permission.INTERNET"/> <uses-pe ...

  4. 【Android】详解Android 网络操作

    目录结构: contents structure [+] 判断网络 判断是否有网络连接 判断WIFI网络是否可用 判断MOBILE网络是否可用 获取当前网络连接的类型信息 监听网络 获取网络信息需要在 ...

  5. Android权限操作之uses-permission详解

    本文实例讲述了Android权限操作之uses-permission.分享给大家供大家参考,具体如下: 我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android ...

  6. OkHttp使用教程——网络操作之OkHttp, Volley以及Gson

    写这篇文章的动机 在安卓项目中有一个问题可能无法避免:网络.不管你是加载图片,请求API数据还是从因特网上获得一个字节,你都是在使用网络. 鉴于网络在安卓中的重要性与基础性,当今安卓开发者面临的问题之 ...

  7. android内部培训视频_第四节(1)_异步网络操作

    第四节(1):异步网络操作  一.结合asyncTask下载网络图片 1.定义下载类,继承自asyncTask,参数分别为:String(url地址),Integer(刻度,本例没有用到),BitMa ...

  8. 九、Android学习第八天——广播机制与WIFI网络操作(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 九.Android学习第八天——广播机制与WIFI网络操作 今天熟悉了An ...

  9. android之网络操作(1)

    一.网络操作 在网络操作中JAVA已经为我提供了一套API用来进行网络操作,在android开发中我们仍可以这套API来做开发.下面通过一个简单的例子来了解一下android下的网络操作. 点击图中下 ...

随机推荐

  1. linux 下安装mysql

    看以下这篇文章就够了   http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 查看有没有安装过:       ...

  2. struts2于validate要使用

    package com.test.action; import com.opensymphony.xwork2.ActionSupport; import com.test.model.User; p ...

  3. 左右sqlplus一些方法用于汇总

    SQL> select * from v$version where rownum=1; BANNER --------------------------------------------- ...

  4. ProducerConsumerDemo

    package algorithm; public class ProducerConsumer { public static void main(String[] args) { SyncStac ...

  5. hdoj 2183 奇数阶魔方(II) 【模拟】+【法】

    比赛的时候花了一个多小时,以做不做 分析:可观察:中间是(n*n+1)/2, 中间的上面是n*n,以下是1, 左边是n,右面是(n*n+1)-n,并且正对角线是最左上对到最右下端添加(+1).另外一条 ...

  6. IE不能上网、有道云笔记不能联网、各种软件主页不能联网解决办法一

    其他的办法我几乎都试过了,读者可以无搜一下,我的问题是,我用Lantern.exe,所以只要打开这个就可以了! 我一直不知道是这个问题,困扰了好久QAQ

  7. Hadoop0.20.2 Bloom filter应用演示样例

    1. 简单介绍 參见<Hadoop in Action>P102 以及 <Hadoop实战(第2版)>(陆嘉恒)P69 2. 案例 网上大部分的说明不过依照<Hadoop ...

  8. NSIS:卸载加密码示例

    原文 NSIS:卸载加密码示例 最近有几个同学问我关于卸载时加密码的问题,其实很简单,懂点基础就可以根据安装加密码那篇文章http://www.flighty.cn/html/bushu/201009 ...

  9. 【POJ3268】Silver Cow Party 最短

    意甲冠军:一群奶牛去的地方.去回,然后回去寻找最伟大值. 题解:两遍最短路,结束.邻接矩阵存边能够避免建反图. #include <cstdio> #include <cstring ...

  10. SQL Server编程系列(2):SMO常用对象的有关操作

    原文:SQL Server编程系列(2):SMO常用对象的有关操作 在上一篇周公简单讲述了SMO的一些基本概念,实际上SMO体系结构远不止周公在上一篇中讲述的那么简单,下图是MSDN上给出的一个完整的 ...