知识图谱

Kotlin笔记(66) — kotlin实现Http请求

2021-03-02  本文已影响0人  奔跑的佩恩

前言

在Android开发过程中, 经常会涉及到一些网络请求。比较优秀的网络请求有:HttpClientAndroid-Async-Http,Volley,OkHttpRetrofitkotlin在网络请求方面,也有不俗表现。这里我将Kotlin实现简单的网络GET请求封装到了一个工具类HttpUtil中,下面就来看看相关使用吧

今天涉及到的知识有:

  1. HttpUtil 简介
  2. HttpUtil 在Activity 中使用
  3. 效果图和鲜蘑菇结构图
  4. HttpUtil 源码
  5. 一些建议

先来波效果图


效果图.gif

一.HttpUtil 简介

HttpUtil是利用kotlin语言封装的网络请求,可以实现简单的GET请求,包括获取文字和获取网络图片的方法。HttpUtil主要方法如下:

    /***
     * get请求获取数据
     *
     * @param url:请求的url,如:
     * @param charset: 字符集,如 Charsets.UTF_8
     */
    fun getTextData(url:String,charset: Charset,listener:OnGetTextResultListener)

    /***
     * get请求获取网络图片
     *
     * @param url:请求的url
     */
    fun getBytesData(url:String,listener:OnGetByteResultListener)

二. HttpUtil 在Activity 中使用

涉及网络通讯的话,需要在androidmanifast.xml中加上网络权限,如下:

    <uses-permission android:name="android.permission.INTERNET"/>

下面贴出HttpUtilTempActivity中使用代码:

/**
 * Title:
 * description:
 * autor:pei
 * created on 2021/1/21
 */
class TempActivity :AppCompatActivity(),HttpUtil.OnGetTextResultListener,
    HttpUtil.OnGetByteResultListener {

    private var mHttpUtil:HttpUtil= HttpUtil()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_temp)

        //点击事件
        mBtn.setOnClickListener {
            LogUtil.i("====我点击了====")

            //发起请求( 注: 测试url会在后文中给出)
            var url:String="https://xxx.xxxxx.xxx"
            mHttpUtil.getTextData(url,Charsets.UTF_8,this@TempActivity)
        }

        //点击事件
        mBtn2.setOnClickListener {
            LogUtil.i("====我点击了啊====")
            
            //注: 测试url会在后文中给出
             var url:String="https://xxx.xxxxx.xxx"
            mHttpUtil.getBytesData(url,this@TempActivity)
        }
    }


    override fun getTextResult(result: String?) {
        //数据太多,为了演示效果,只取部分数据
        var message:String = result!!.substring(0,20)

        LogUtil.i("======收到结果===message=$message")
        mTvTest.text = message
    }

    override fun getByteResult(bitmap: Bitmap?) {
        mImv.imageBitmap=bitmap
    }

}

三.效果图和项目结构图

图片比较大,加载时会比较慢些


效果图.gif image.png

四.HttpUtil 源码

4.1 获取文字通讯和获取网络图片的url

上一篇下一篇

猜你喜欢

热点阅读