Android 解析http路径

一、前言:

我们需要把http请求中的参数解析成map键值对,然后对应键值对逻辑处理。

//1、例如这样的请求链接
var url = "www.youdaoyun.com://book_page?bookid=1293&pixel_id=123456789&adjust_no_sdkclick=1"
//2、解析成map集合
{adjust_no_sdkclick=1, pixel_id=123456789, bookid=1293}

二代码、

1、点击运行

binding.btnClick.setOnClickListener {
  var url = "www.youdaoyun.com://book_page?bookid=1293&pixel_id=123456789&adjust_no_sdkclick=1"
  //开始解析
  parseUrl(url)
}

2、解析方法

  /**
     * 解析数据
     * 1、使用//分割数据之后,得到:book_page?bookid=1293&pixel_id=123456789&adjust_no_sdkclick=1
     */
    fun parseUrl(url:String){
        if (url.contains("www.youdaoyun.com://")) {
           if (url.contains("book_page")) {
                //1、使用//分割数据
                val url1: String = url.split("//").get(1)
                // 2、返回的键值对
                val maps: Map<String, String> = urlSplit(url1)
                 Log.d("lyy", maps.toString())
                //3、根据自己的需要,取对应的键值对值
                if (maps.containsKey("bookid")) {
                    val bookid = maps["bookid"]
                    //...做一些页面跳转
                    Log.d("lyy", "----bookid: ${bookid}")
                }
            }
        }
    }


  /**
     * 解析成Map键值对
     * www.youdaoyun.com://book_page?bookid=1293&pixel_id=123456789&adjust_no_sdkclick=1
     * 1、第一次分割之后数据:bookid=1293&pixel_id=123456789&adjust_no_sdkclick=1
     * 2、第二次分割之后数据:bookid=1293&pixel_id=123456789&adjust_no_sdkclick=1
     * 3、第三次分割之后数据:bookid=1293  pixel_id=123456789  adjust_no_sdkclick=1 数组了
     */
    fun urlSplit(url: String): Map<String, String> {
        //返回结果组装
        val map: MutableMap<String, String> = HashMap()
        //1、首先去除空格,按?号分割成数组
        var newUrl = url.trim { it <= ' ' }
        var firtList = newUrl.split("?")
        var strUrlParam = ""
        if (firtList.size > 1) {
            strUrlParam = firtList[1]
        }

        //2、&分割成数组
        var secondList = strUrlParam.split("&")
        secondList.forEach {
            //3、=分割成数组
            var threeList = it.split("=")
            //解析出键值
            if (threeList.size > 1) {
                //正确解析
                map[threeList[0]] = threeList[1]
            }
        }
        return map
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容