android网络操作使用汇总(http)
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)的更多相关文章
- PHP网络操作函数汇总
PHP网络操作函数汇总 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了PHP网络操作函数汇总,本文列举了如gethostbyaddr.gethostbyname.head ...
- Android网络操作的几种方法
安卓开发软件:AndroidStudio 服务器软件:Myeclipse+Tomcat 首先无论是哪种方式,安卓手机软件要想联网,必须要申请联网权限(android.permission.INTERN ...
- android——网络操作(一)连接网络
连接网络 一,包含许可 <uses-permissionandroid:name="android.permission.INTERNET"/> <uses-pe ...
- 【Android】详解Android 网络操作
目录结构: contents structure [+] 判断网络 判断是否有网络连接 判断WIFI网络是否可用 判断MOBILE网络是否可用 获取当前网络连接的类型信息 监听网络 获取网络信息需要在 ...
- Android权限操作之uses-permission详解
本文实例讲述了Android权限操作之uses-permission.分享给大家供大家参考,具体如下: 我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android ...
- OkHttp使用教程——网络操作之OkHttp, Volley以及Gson
写这篇文章的动机 在安卓项目中有一个问题可能无法避免:网络.不管你是加载图片,请求API数据还是从因特网上获得一个字节,你都是在使用网络. 鉴于网络在安卓中的重要性与基础性,当今安卓开发者面临的问题之 ...
- android内部培训视频_第四节(1)_异步网络操作
第四节(1):异步网络操作 一.结合asyncTask下载网络图片 1.定义下载类,继承自asyncTask,参数分别为:String(url地址),Integer(刻度,本例没有用到),BitMa ...
- 九、Android学习第八天——广播机制与WIFI网络操作(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 九.Android学习第八天——广播机制与WIFI网络操作 今天熟悉了An ...
- android之网络操作(1)
一.网络操作 在网络操作中JAVA已经为我提供了一套API用来进行网络操作,在android开发中我们仍可以这套API来做开发.下面通过一个简单的例子来了解一下android下的网络操作. 点击图中下 ...
随机推荐
- linux 下安装mysql
看以下这篇文章就够了 http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 查看有没有安装过: ...
- struts2于validate要使用
package com.test.action; import com.opensymphony.xwork2.ActionSupport; import com.test.model.User; p ...
- 左右sqlplus一些方法用于汇总
SQL> select * from v$version where rownum=1; BANNER --------------------------------------------- ...
- ProducerConsumerDemo
package algorithm; public class ProducerConsumer { public static void main(String[] args) { SyncStac ...
- hdoj 2183 奇数阶魔方(II) 【模拟】+【法】
比赛的时候花了一个多小时,以做不做 分析:可观察:中间是(n*n+1)/2, 中间的上面是n*n,以下是1, 左边是n,右面是(n*n+1)-n,并且正对角线是最左上对到最右下端添加(+1).另外一条 ...
- IE不能上网、有道云笔记不能联网、各种软件主页不能联网解决办法一
其他的办法我几乎都试过了,读者可以无搜一下,我的问题是,我用Lantern.exe,所以只要打开这个就可以了! 我一直不知道是这个问题,困扰了好久QAQ
- Hadoop0.20.2 Bloom filter应用演示样例
1. 简单介绍 參见<Hadoop in Action>P102 以及 <Hadoop实战(第2版)>(陆嘉恒)P69 2. 案例 网上大部分的说明不过依照<Hadoop ...
- NSIS:卸载加密码示例
原文 NSIS:卸载加密码示例 最近有几个同学问我关于卸载时加密码的问题,其实很简单,懂点基础就可以根据安装加密码那篇文章http://www.flighty.cn/html/bushu/201009 ...
- 【POJ3268】Silver Cow Party 最短
意甲冠军:一群奶牛去的地方.去回,然后回去寻找最伟大值. 题解:两遍最短路,结束.邻接矩阵存边能够避免建反图. #include <cstdio> #include <cstring ...
- SQL Server编程系列(2):SMO常用对象的有关操作
原文:SQL Server编程系列(2):SMO常用对象的有关操作 在上一篇周公简单讲述了SMO的一些基本概念,实际上SMO体系结构远不止周公在上一篇中讲述的那么简单,下图是MSDN上给出的一个完整的 ...