美文网首页
Mapbox源码分析(3)发送请求

Mapbox源码分析(3)发送请求

作者: 一个观察世界的普通人 | 来源:发表于2020-02-23 19:59 被阅读0次

    简介:

    通过源码,我们来一步步分析Mapbox地图引擎如何发送网络请求的,这里是基于5.3.0的版本.

    Mapbox源码分析(2)url解析这篇里我们了解了mapbox如何将自定义的常量字符串解析出它需要的url地址,那么当url解析出来之后应该便是发送请求了,这里我们看到online_file_source.cpp文件的request()方法看起

    这里我们看到当url解析完之后,返回了一个OnlineFileRequest对象,我们看下它的构造方法

    这里我们看到它赋值了Impl,resource,callback对象,并且调用了impl.add()方法,我们继续看

    在这里我们看到它将请求添加到请求集合中,并加调用request->schedule();继续往下看

    这里我们看到它判断了请求执行是否有延迟,继续往下看

    到这里我们看到,它判断了请求是否是激活的以及时间是否超限,这里我们看impl.activateOrQueueRequest(this);这行代码

    这里我们看到它根据请求的数量将请求进行队列或者激活处理,这里我们看激活请求方法

    到这里我们看到了它调用了httpFileSource.request()方法,我们继续往下看

    这里我们看到它实例化了HTTPRequest对象,那么我们便看看HTTPRequest对象的构造方法

    到这里我们看到了它并未做什么处理,只是初始化了一些对象,那么请求是如何发出的呢?那么我们看看它new的这个javaClass对象是什么吧

    static jni::Class<HTTPRequest> javaClass;

    原来new的这个对象是java层的HTTPRequest对象,那么我们回到java层看一下这个类

    到这里就看明白了,这里对url进行了一些判断处理后,通过OkHttpClient发出请求的,既然我们看明白了请求发送过程,那顺便看看拿到请求数据之后的处理吧,这里我们看到HTTPRequest覆盖的onResponse()方法

    这里我们看到拿到响应数据之后便通过nativeOnResponse()方法传入底层了,那么我们看看底层对应的函数

    到这里网络请求的过程便梳理完了

    相关文章

      网友评论

          本文标题:Mapbox源码分析(3)发送请求

          本文链接:https://www.haomeiwen.com/subject/piusqhtx.html