zoukankan      html  css  js  c++  java
  • 基于okhttp的安卓端网络编程

    一、技术概述

    OkHttp是一款开源的网络框架,封装了一个高性能的http请求库。OkHttp支持封装请求和处理响应,使用OkHttp网络框架可以更方便地处理安卓端的网络请求和前后端的数据交互。

    二、技术详述

    1、在app目录下的build.gradle中添加依赖。
    implementation 'com.squareup.okhttp3:okhttp:4.8.1'
    这里使用的是OkHttp 4.x,当然使用OkHttp 3.x也是可以的。
    2、创建OkHttpClient对象。
    OkHttpClient client = new OkHttpClient();
    上述创建创建方法采用默认配置,即默认请求连接超时时间10s,读写超时时间10s,连接不成功会自动再次连接。如果需要另外配置,可以通过Builder的方式来自己定义一个OkHttpclient。

    public final OkHttpClient = new OkHttpClient.Builder()
      .addInterceptor(new HttpLoggingInterceptor())
      .cache(new Cache(cacheDir,cacheSize))
      .等等配置
      .build();
    

    3、构造Request对象并由OkHttpClient提交请求。

    其中JSON为Activity类中的常量public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");,json为组装好数据的JSONObject对象,请求头添加token作为页面访问时的身份验证。
    4、获得Response对象并进行分析处理。

    其中由OkHttpClient创建的Call类对象提交请求,响应主体为含status、message、data字段的json格式的数据。

    流程图

    三、技术使用中遇到的问题和解决过程

    问题描述:Android 9.0以上系统,HTTP网络访问请求受限,HTTPS无影响。
    解决过程:1、在项目的res目录下创建xml目录,并在xml目录下新建network_security_config.xml文件,采用Android7.0+的默认网络配置:

    2、修改项目的AndroidManifest.xml,在根目录下增加<uses-permission android:name="android.permission.INTERNET" />
    3、修改项目的AndroidManifest.xml,在application中增加android:networkSecurityConfig="@xml/network_security_config"

    四、总结

    okhttp网络框架不仅使用上方便快捷,而且稳定性和安全性表现好,适合于目前安卓端的网络编程。在本次实践中为每个请求创建一个OkHttpClient实例的做法其实是不合适的,会造成资源的浪费。正确的做法应该是用同一个OkHttpClient实例来执行所有的请求,即让OkHttpClient保持单例。

    五、列出参考文献、参考博客(标题、作者、链接)

    Okhttp3基本使用
    【Android】OkHttp3总结与封装
    从 http协议角度解析okhttp

  • 相关阅读:
    用 Web 实现一个简易的音频编辑器
    TypeScript教程
    他的独,殇情沉醉
    重新拎一遍js的正则表达式
    网络流
    Xmind最新的安装与破解教程
    adb的端口号5037被占用的解决方法
    使用Fiddler模拟弱网测试教程
    web的前台、后台、前端、后端
    常见面试笔试题
  • 原文地址:https://www.cnblogs.com/caihan/p/14926870.html
Copyright © 2011-2022 走看看