android中网络操作使用总结(http)
来源:互联网 发布:汽车epc软件 编辑:程序博客网 时间:2024/06/08 14:10
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();}
向服务器提交数据时,需要采用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"));//获取服务器响应内容 } 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时一个轻量级的Http客户端,提供的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)
- android中使用http协议访问网络
- Android入门--Http网络操作
- android网络操作---数据传输(基于HTTP协议)
- Android使用Http访问网络
- Android中使用Volley开源库进行Http网络请求(GET方式)
- Android中使用Volley开源库进行Http网络请求(POST方式)
- Android中使用Volley开源库进行Http网络请求(GET方式)
- Android中基于HTTP的通信技术(1)使用Http的Get方式读取网络数据
- Android中基于HTTP的通信技术(2)使用Http的Post方式读取网络数据
- Android中Http网络请求库框架Volley和Asnyc-http的使用---第三方库学习笔记(一)
- Android Http 网络操作相关类
- android网络通信之-Http(Android操作HTTP实现与服务器通信)
- android Http网络通信方式总结
- Android基于HTTP网络编程总结浅析
- android之网络访问http请求总结
- Android中Http网络请求库Asnyc-http的使用第三方库
- android中http访问总结
- JacORB配置和ant配置
- 大数减法
- 变量 内存 指针(二)
- JAVA之利用数组输出杨辉三角形
- Android无源码调试APK(使用ApkTool和Eclipse ADT)
- android中网络操作使用总结(http)
- MySQL中ON DUPLICATE KEY UPDATE使用
- linux学习之文件编程
- 矩阵链乘法
- DP-统计单词个数
- 学习笔记之 jstl标签库 与 自定义标签库
- Eclipse插件大全 挑选最牛的TOP30(全)
- Eclipse启动参数大全
- VC2010 CString.Format使用报错 error C2664