• Android 网络请求框架


     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

       

  • 相关阅读:
    运行python脚本后台执行(转载)
    双积分式(A/D)转换器电路结构及工作原理
    SAR ADC简介
    [hdu-6395]Sequence 分块+矩阵快速幂
    [hdu-1272]小希的迷宫 并查集
    redhat7.2安全基线BI
    Oracle 12c RAC
    .gitlab-ci.yml简介
    gitlab
    Centos 7 Docker安装配置
  • 原文地址:https://www.cnblogs.com/fanfusuzi/p/6765249.html
Copyright © 2020-2023  润新知