1.okHttp

  • 特点

简单、灵活、无连接、无状态

优势:

  • 谷歌官方API在6.0之后在Android SDK中移除了HttpClient,然后他火了起来,
  • 他支持SPDY(谷歌开发的基于TCP应用层协议增强的http协议),允许连接同一主机的所有请求分享一个socket,如果SPDY不可用,会使连接池减少请求延迟,
  • 使用GZIP压缩下载内容,并且压缩操作是透明的,利用响应缓存来避免重复的网络请求。
  • 当网络出现问题,okhttp依然有效,他将从常见的连接问题当中回复,如果服务器有多个ip地址,当一个ip地址连接失败,会尝试连接其他的地址,这对ipV4和ipV6以及寄宿在多个数据中心的服务而言,很有必要。
  • get请求
  • post请求
  • 基于Http的文件上传
  • 文件下载
  • 加载图片
  • 支持请求回调,直接返回对象、对象集合
  • 支持session的保持

使用步骤:

0.添加依赖

1.创建OKHttpClient实例

  mOkHttpClient = new OkHttpClient();

2.构建request|,build是辅助类

 mGetRequest = new Request.Builder().url(Constants.GET_URL).build();

3.获取网络请求

  Call call = mOkHttpClient.newCall(mGetRequest);

4.执行网络请求

(同步\异步:同步不会开启线程,需要去开启,否则报异常,异步会开启子线程)

 Response response = call.execute();

5.获取response,处理响应结果

  if (response.isSuccessful()) {
22. String reponseStr = response.body().string();
23. Log.e(TAG, "同步GET请求成功 ===========" + reponseStr);
24. } else {
25. Log.e(TAG, "同步GET请求失败 ===========, code = " + response.code());
26. }

  

4.异步:

 call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Log.e(TAG, "异步GET请求失败 ===========, code = " + e.getMessage());
}
@Override
public void onResponse(Response response) throws IOException {
// 5.处理响应的结果
if (response.isSuccessful()) {
String reponseStr = response.body().string();
Log.e(TAG, "异步GET请求成功 ===========" + reponseStr);
} else {
Log.e(TAG, "异步GET请求失败 ===========, code = " + response.code());
}
}
});

  

2.Volley

在进行网络通信时,一般使用AsyncTask,AsyncTaskLoader,HttpURLConnection,HttpClient等,在2013年提出了新的网络通信框架Volley。

Volley 在android 2.3以上版本使用HttpURLConnection完成网络操作

在Android 2.3以下版本使用HttpClient来完成网络操作

  • 特点
  1. 自动调度网络请求
  2. 支持并发网络连接,支持单个或多个请求
  3. 支持标准的HTTP缓存
  4. 支持请求的优先级
  5. 提供调试和跟踪工具

优点:

  1. 支持任意的数据传输格式(图片,字符串,json以及自己定义的数据格式),速度快

缺点:

由于是在内存中解析和处理数据,不适合大量数据的下载-------如果想要下载大的文件可以使用系统的DowloadManager

3.Retrofit

  

Android 网络请求框架的更多相关文章

  1. Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)

    最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...

  2. Android网络请求框架

    本篇主要介绍一下Android中经常用到的网络请求框架: 客户端网络请求,就是客户端发起网络请求,经过网络框架的特殊处理,让后将请求发送的服务器,服务器根据 请求的参数,返回客户端需要的数据,经过网络 ...

  3. Android 网络请求框架android-async-http问题

    今天通过接口请求服务器的一些app数据,发现一个很奇怪的问题,请求一个链接的时候,通常在第一次请求发起的时候没有什么问题,能很快的拿到数据,但是 往后再去请求的时候就会等待很久,而且最后会请求失败,一 ...

  4. Android 网络请求框架Retrofit

    Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp ...

  5. Android网络请求框架之Retrofit实践

    网络访问框架经过了从使用最原始的AsyncTask构建简单的网络访问框架(甚至不能称为框架),后来使用开源的android-async-http库,再到使用google发布的volley库,一直不懈的 ...

  6. Java/Android 网络请求框架/库

    Android 图片缓存框架  最上面的最优先 com.facebook.fresco:fresco:0.12.0                7.26.2016最新 Universal-Image ...

  7. Ok-Http | Android 网络请求框架使用方式

    POST : package he3.sd.util; import com.parkingwang.okhttp3.LogInterceptor.LogInterceptor; import jav ...

  8. RxAndroid+RxJava+Gson+retrofit+okhttp初步搭建android网络请求框架

    新建工程集成, 一.工具集成(2017-4-27) 首先第一步集成retrofit retrofit 的 git 网站: https://github.com/square/retrofit 在git ...

  9. xamarin android网络请求总结

    xamarin android中网络请求的框架非常多,在项目中使用的是第三方的一个网络请求框架restsharp,应该是github上.net网络请求最多star的框架,没有之一.这里就简单汇总了其他 ...

随机推荐

  1. 20165234 《Java程序设计》第十周课下作业

    相关知识点的总结 泛型 Java 泛型的主要目的是可以建立具有类型安全的集合框架,如链表.散列映射等数据结构. 可以使用“class 名称<泛型列表>”声明一个类,为了和普通的类有所区别, ...

  2. Debian 9 美化界面

    Debian 桌面美化 安装 gnome-tweak-tool aptitude install gnome-tweak-tool 登陆gnome-look下载主题包 gnome-look上有很多主题 ...

  3. 在Linux环境下使用Jexus部署ASP.NET Core

    关于如何在Linux中添加ASP.NET Core运行时环境请参考我的上一篇文章,本文章将不再做赘述. 本文章运行环境如下:  (1) 安装独立版Jexus 本教程安装的是独立版的Jexus,独立版的 ...

  4. C++ Template 编程,泛型编程练习

    #include <iostream> #include <string> #include <deque> #include <stdexcept> ...

  5. shell脚本 统计一段程序运行时间【转】

    转自:https://bbs.csdn.net/topics/391943383#include <stdio.h> #include <stdlib.h> #include ...

  6. 利用binlogserver恢复单表实验【转】

    使用场景 每次开启binlogserver 指定了mysql-bin.0000XX 后都会从该点从头进行传输一次 创建binlogserver [root@mysql-zst3 binlogserve ...

  7. 设计模式C++学习笔记之五(Factory Method工厂方法模式)

      工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的 ...

  8. linux批量替换文件内容3种方法(perl,sed,shell)

    方法1:perl   这两天在构建一个应用的使用用到了maven,由于project很大,足足有700多个 pom.xml文件,更郁闷的是在很多pom.xml文件里都单独指定了资源库的url,我需要把 ...

  9. git下载指定的版本

    1.查看提交历史    sudo git log 打印如下内容: commit 2e3c19d412ab6a99bb51f338f71537a720a9c706   Author: huangbaog ...

  10. hostapd中扫描的调用过程

    扫描结果获取supplicant_event(EVENT_SCAN_RESULTS)wpa_supplicant_event_scan_results_wpa_supplicant_event_sca ...