雨日底下一个立怎么读专读什么

由于您的浏览器禁用了javascript,无法正常使用本网站功能,
其它关键字
[收藏此作者]
&【http://462288.jjwxc.net】
被收藏数:8407
专栏主人&清枫语&的自白:
戳一下上面的[收藏此作者],收藏一个吧~O(∩_∩)O~
1.《擦身而过》出版名为《你若懂我,该有多好》,现已全面上市,当当、卓越、京东有售,实体书是精修版,新增将近两万字番外~
霸王排行榜
读者昵称霸王等级
[向霸主之路逼近,炸她霸王票]
地雷(100点晋江币)
手榴弹(地雷×5)
火箭炮(地雷×10)
浅水炸弹(地雷×50)
深水鱼雷(地雷×100)
个深水鱼雷(自行填写数量)
最近更新作品:  作品状态:连载中  作品字数:434377  最后更新时间:
【相遇终有时】
原创-言情-近代现代-爱情
12,291,800&
原创-言情-近代现代-爱情
459,534,592&
原创-言情-近代现代-爱情
279,687,872&
原创-言情-近代现代-爱情
100,291,560&
【棋逢对手之陆家系列】
原创-言情-近代现代-爱情
170,410,880&
原创-言情-近代现代-爱情
105,982,320&
原创-言情-近代现代-爱情
79,146,872&
原创-言情-近代现代-爱情
139,892,096&
原创-言情-近代现代-爱情
92,678,048&
【久别重逢之顾家系列】
原创-言情-近代现代-爱情
73,347,832&
原创-言情-近代现代-爱情
106,380,384&
原创-言情-近代现代-爱情
111,816,344&
原创-言情-近代现代-爱情
52,246,924&
原创-言情-近代现代-爱情
63,196,168&
【其他系列】
23,836,474&
原创-言情-古色古香-爱情
47,969,816&
&公*******了
原创-言情-架空历史-爱情
78,645,248&
原创-言情-架空历史-爱情
86,092,856&
22,570,036&
原创-言情-近代现代-爱情
60,271,992&
原创-言情-近代现代-爱情
44,312,792&
欢迎和我交换友情链接^^雨一直在下_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
雨一直在下
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢114网址导航1710人阅读
玩转android(154)
管中窥豹(221)
Retrofit、Retrofit、Retrofit,越来越多的人在玩这个网络请求框架,这个由squareup公司开源的网络请求框架确实挺好用,今天我们就来看一下这个东东怎么玩!Retrofit作为一个简化的HTTP请求库其实已经有很长一段时间了,只不过在早期的版本里有些地方用的不是特别爽,Retrofit从2.0开始修改了许多之前的痛点,现在不仅更好用而且功能也更加的强大。我们可以在Retrofit中利用接口、方法和注解参数等来声明定义一个请求该如何被创建。同时它还有一个非常鲜明的特点就是支持REST风格的请求,同时它还很好的解决了线程异步访问问题,支持RxJava等。好了,废话不多说,我们先来看看今天要实现的效果图。我们就来做这样一个简单的列表,看看如何使用Retrofit来实现。OK,这里主要通过如下四步来使用Retrofit。1.导包2.定义API接口3.初始化Retrofit4.发起网络请求1.导包要使用Retrofit,首先肯定是导包,我这里导入两个包,如下:compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'一个包是Retrofit的包,还有一个是Json转换的工具包(具体作用看第三小节)。2.定义API接口接下来我们来定义相关的网络请求接口,在Retrofit2.0中,APIService的定义也将是一个非常简单的事情,比如我们这个案例,我定义的APIService如下:public interface ApiService {
//获取TabLayout上的数据
@GET(&api/lore/classify&)
Call&ClassfyBean& getClassfyData();
//获取首页列表的数据
@GET(&api/lore/list&)
Call&CateItemBean& getListData(@Query(&id&) int id);
//获取详情数据
@GET(&api/lore/show&)
Call&DetailBean& getDetailData(@Query(&id&) int id);
}@GET表示该请求为一个get请求,常用的还有@POST表示该请求为一个POST请求。@GET后面的参数表示请求的路径但是不包括域名,第一个方法由于是获取TabLayout上的数据,这个接口不需要参数,第二第三个方法在请求数据时都需要传递参数,所以该方法带有参数,@Query(&id&)表示该参数名为id。以第二个方法为例,带参数的请求实际上等同这样:api/lore/list?id=id,这里需要注意的是,这种方式适用于get请求,POST请求还需要添加上@FormUrlEncoded注解,表示以表单的方式来提交参数。举个栗子:@FormUrlEncoded
@POST(&api/lore/list&)
Call&CateItemBean& getListData(@Field(&id&) int id);Call请求接收一个泛型参数,该参数表示该请求的返回对象,Retrofit在收到返回值之后会根据我们传递的对象转换工厂方法将返回值转为该对象。3.初始化Retrofit定义好了APIService之后,接下来我们就可以初始化Retrofit了,Retrofit的初始化很简单,如下:Retrofit retrofit = new Retrofit.Builder()
.baseUrl(&http://www.tngou.net/&)
.addConverterFactory(GsonConverterFactory.create())
.build();baseUrl其实就是我们请求地址的域名,这个域名配合上文的APIService中的参数才是一个完整的请求路径。addConverterFactory表示一个添加一个转换工厂,因为我这里请求的数据是为JSON数据,所以添加GsonConverterFactory.create(),表示将接收到的Json数据转换为一个DAO,官方提供的转换工厂除了我们用的这个之外,还有如下几个:Gson: com.squareup.retrofit:converter-gson
Jackson: com.squareup.retrofit:converter-jackson
Moshi: com.squareup.retrofit:converter-moshi
Protobuf: com.squareup.retrofit:converter-protobuf
Wire: com.squareup.retrofit:converter-wire
Simple XML: com.squareup.retrofit:converter-simplexml如果需要使用则把相应的包添加进来即可。OK,这是一个最最基本的配置,Retrofit的网络请求使用了OKHttp,但是我们这里怎么没有配置呢?如果你不配置,系统会默认创建一个OKHttp对象,如果你配置了那也没问题,配置方式如下:
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(5, TimeUnit.SECONDS)
.readTimeout(10,TimeUnit.SECONDS)
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(&http://www.tngou.net/&)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();4.发起网络请求做完上面几步之后,接下来我们就可以发起一个网络请求了,代码如下:
ApiService apiService = retrofit.create(ApiService.class);
Call&ClassfyBean& call = apiService.getClassfyData();
call.enqueue(new Callback&ClassfyBean&() {
public void onResponse(Call&ClassfyBean& call, Response&ClassfyBean& response) {
ClassfyBean body = response.body();
List&Fragment& fragments = new ArrayList&Fragment&();
for (int i = 0; i & body.getTngou().size(); i++) {
fragments.add(BaseFragment.getInstance(body.getTngou().get(i).getId()));
VpAdapter adapter = new VpAdapter(getSupportFragmentManager(), fragments, body);
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
public void onFailure(Call&ClassfyBean& call, Throwable t) {
Log.d(&google_lenve&, &onFailure: &+t.getMessage());
});在这里,我们先通过retrofit.create方法获取 一个APIService实例,然后调用该实例中对应的获取数据的方法,获取一个call,拿到call之后我们有两个选择(类似于OKHttp中的call),一个是调用call中的execute()方法获取一个Response对象,代码如下:Response&ClassfyBean& execute = call.execute();但是这个方法会阻塞线程,在Android中如果调用这个方法需要我们将这一行代码放在子线程中执行,这无疑会增大我们的代码量。所以一个推荐的方法是调用call中的enqueue方法,这是一个异步请求,类似于OKHttp中的enqueue,不同的是这里的两个回调方法onResponse和onFailure都是在主线程中执行,意味着我们可以直接在这两个回调方法中更新UI,爽吧!5.其他以上几个知识点已经可以实现我们的需求了,但是既然说到了Retrofit,那我们就再来聊聊它的其他一些功能点。在Retrofit中还有一个注解叫做@Path,这个表示URL地址的一个占位符,使用方式如下:@GET(&api/{id}/delete&)
Call&DetailBean& getData(@Path(&id&)String id);还有一个注解@Header,表示添加请求头信息。。还有很多其他注解,由于用的比较少,我这里就不再介绍了。OK,这篇介绍就到这里,后面我们再来说说Retrofit配合RxJava使用的问题。以上。。。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:685571次
积分:9935
积分:9935
排名:第1365名
原创:246篇
评论:512条
欢迎一起讨论技术问题。
文章:11篇
阅读:21519
阅读:6927
阅读:29794
阅读:45684
文章:13篇
阅读:17546
阅读:12660
文章:20篇
阅读:15741
文章:53篇
阅读:125050}

我要回帖

更多关于 专业高压清洗雨水管道 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信