Android常用网络框架小结
来源:互联网 发布:htc移动网络共享停运 编辑:程序博客网 时间:2024/06/05 08:39
原生网络请求HttpUrlConnection
它的API简单,体积较小,因而非常适用于Android项目。压缩和缓存机制可以有效地减少网络访问的流量,在提升速度和省电方面也起到了较大的作用。
用法
- 首先我们需要获取到一个HttpURLConnection实例,一般需要new出一个URL对象,并传入目标网络地址,通过调用openConnection()方法获得HttpURLConnection实例。
- 得到该实例后。我们需要设置一下http请求的的方法,这里我们主要研究get和post,默认是使用get方法。get一般用于从服务器获取数据,post一般用于向服务器提交数据,设置请求方法使用函数setRequestMethod(“POST”)进行设置。
- 此外可以进行一些请求的限制,比如连接超时的时间等,可以通过setConnectTimeout设置超时时间。
- 获取服务器返回的输入流,使用getInputStream方法获取。
- 读取内容并处理
- 关闭连接,通过调用disconnect方法关闭当前的连接。
使用过程中不要忘记添加权限
<uses-permission android:name="android.permission.INTERNET"/>
防止网络请求卡死:
- 调用connection.disconnect();并置空对象
- 设置请求超时时间
GET请求实现
public String get(String urlPath) { HttpURLConnection connection = null; InputStream is = null; try { URL url = new URL(urlPath); //获得URL对象 connection = (HttpURLConnection) url.openConnection(); //获得HttpURLConnection对象 connection.setRequestMethod("GET"); // 默认为GET connection.setUseCaches(false); //不使用缓存 connection.setConnectTimeout(10000); //设置超时时间 connection.setReadTimeout(10000); //设置读取超时时间 connection.setDoInput(true); //设置是否从httpUrlConnection读入,默认情况下是true; if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { //相应码是否为200 is = connection.getInputStream(); //获得输入流 BufferedReader reader = new BufferedReader(new InputStreamReader(is)); //包装字节流为字符流 StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { response.append(line); } return response.toString(); } } catch (Exception e) { e.printStackTrace(); } finally { if (connection != null) { connection.disconnect(); connection = null; } if (is != null) { try { is.close(); is = null; } catch (IOException e) { e.printStackTrace(); } } } return null; }
一、Volley
Volley是google官方2013年I/O大会推出的一套小而巧的异步请求库,该框架封装的扩展性很强,支持HttpClient、HttpUrlConnection,甚至支持OkHttp。
优点:
适合数据量小而频繁的请求,通常情况下是要结合其他框架一起来使用, 比如volley+okhttp.
扩展性强,可二次封装
和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)
缺点:
下载大文件性能不佳, 不支持大文件上传
GET请求
private void get(){ RequestQueue queue= Volley.newRequestQueue(getApplicationContext()); String url="http://121.41.119.107/test/index.php"; StringRequest request=new StringRequest(url, new Response.Listener<String>() { @Override public void onResponse(String response) { Log.d("TAG",response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }); queue.add(request); }
二、OkHttp
优点:
- 支持SPDY,共享同一个Socket来处理同一个服务器的所有请求
- 无缝的支持GZIP来减少数据流量
- 如果服务器端有多个IP地址,当第一个地址连接失败时,OkHttp会尝试连接其他地址
关闭请求:调用call.cancel()取消请求
GET请求
private String get(String url) { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .build(); Response response = null; try { response = client.newCall(request).execute(); return response.body().string(); } catch (IOException e) { e.printStackTrace(); } return null; }
三、Retrofit
Retrofit是Square公司出品的默认基于OkHttp封装的一套RESTful网络请求框架,RESTful可以说是目前流行的一套api设计的风格,并不是标准。Retrofit的封装可以说是很强大,里面涉及到一堆的设计模式,可以使用不同的http客户端,虽然默认是用http,可以使用不同Json Coonverter来序列化数据,同时提供对RxJava的支持,使用Retrofit+OkHttp+RxJava+Dagger2可以说是现在比较潮的框架,但相对来说门槛比较高。
注意: 使用Retrofit的前提是服务器端代码遵循RESTful规范 !!!!!
关闭请求: 调用call.cancel()取消请求
优点:
- 效率非常高
- 可以直接将结果转换称Java类
- 主要是配合RxJava一起使用
- 传输层默认就使用OkHttp
最大优点:请求响应时间相比volley和Okhttp都要快很多甚至少2倍时间
0 0
- Android常用网络框架小结
- android 常用的网络框架
- Android常用网络框架原理
- Android 常用的网络框架
- Android 常用的网络框架
- Android常用框架----网络请求系列框架
- Android 网络框架_常用的网络框架
- Android 网络框架_常用的网络框架
- Android 网络框架_常用的网络框架
- IOS 常用网络 框架
- android 网络小结
- Android网络下载小结
- android常用代码小结
- Android常用代码小结
- Android开发中常用网络框架例举综合
- Android常用网络请求框架xUtils、OkHttp、Volley、Retorfit对比
- Android 常用三方网络及图片框架知识对比
- 常用IOS网络开发框架
- 常用基础常用JS函数和语法集合大全
- js 技巧集合
- 关于PCIE
- css样式 引用时设置width或max-width,截断不换行
- java的反射机制
- Android常用网络框架小结
- Nexus搭建和使用
- MySQL配置文件mysql.ini参数详解
- Linux环境变量有关函数
- 线性基
- Java菜单元素
- 欢迎使用CSDN-markdown编辑器
- 文件存储
- 【.Net Framework 体积大?】不安装.net framework 也能运行!?原理简介补充附带工具-2