简介:
通过源码,我们来一步步分析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()方法传入底层了,那么我们看看底层对应的函数
到这里网络请求的过程便梳理完了
网友评论