Retrofit使用类(get)

这几天在网上看了一些网络框架,感觉volley和okhttp简单使用还是比较简单的,一般按照套路来都不会出错,但是使用Retrofit的时候,看网上的使用例子,整个人都懵逼了,都是些什么鬼啊,先是用注解定义接口,然后实例化Retrofit,输入基础网址,然后对Retrofit.create把接口实例化,最后才是网络请求,网络请求还是比较简洁明了的,逼逼了这么多文字,下面是结合代码说明,其实也是为了防止以后自己忘了怎么用,当然,也有封装好的框架给你使用,具体的http://blog.csdn.net/gengqiquan/article/details/52329259 查看。

比如你需要请求数据,get方式,网址:http://apis.juhe.cn/goodbook/catalog?dtype=&key=***************************;定义接口有俩种方式,第一种:
@GET("{can1}/catalog")
Call<ResponseBody> responsebody(@Path("can1") String can1, @Query("dtype") String dtype, @Query("key") String key);

@GET是请求方式,{}里面则是需要替换的参数,最后的catalog则是参数名后面接参数,@Path则是替换的参数,@Query则是请求参数,(内是键),后面的跟的则是值

这是一种比较笨重的方式,里面的请求的和传参都已经写死,直接按照如下传参请求数据即可:

Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://apis.juhe.cn/")
.build();
QQQ qqq = retrofit.create(QQQ.class);
Call<ResponseBody> call = qqq.responsebody("goodbook", "json", "*******************************");
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Response<ResponseBody> response, Retrofit retrofit) {
try {
Log.e("---->", response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}

        @Override
        public void onFailure(Throwable t) {

        }
    });

按照@GET定义的,将参数传入其中,即可顺利请求到数据。
后面我觉得这个太笨,就稍微改了一下:
@GET()
Call<ResponseBody> contributorsBySimpleGetCall(@Url String url, @QueryMap Map<String, String> map);
这个就比较简单了,直接将参数按照键值对的方式一一添加,然后将map参入其中即可:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://apis.juhe.cn")
.build();
GetHubAPI getHubAPI = retrofit.create(GetHubAPI.class);
Map<String, String> map = new HashMap<>();
map.put("dtype", "json");
map.put("key", "*************************");
Call<ResponseBody> call = getHubAPI.contributorsBySimpleGetCall("/goodbook/catalog", map);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Response<ResponseBody> response, Retrofit retrofit) {
try {
Log.e("response--->", response.body().string());
} catch (IOException e) {
e.printStackTrace();
Log.e("response--->", "错误");
}
}

        @Override
        public void onFailure(Throwable t) {

        }
    });

get请求暂时就理解了这些,可能有错误的地方,反正也是写给自己看的

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,886评论 18 139
  • 简介 刚接触Retrofit的时候,就写了一篇简单的使用介绍:Retrofit 2.0基本使用方法,算是对Retr...
    Whyn阅读 2,876评论 4 24
  • 整体Retrofit内容如下: 1、Retrofit解析1之前哨站——理解RESTful 2、Retrofit解析...
    隔壁老李头阅读 3,156评论 5 14
  • 一直很想写小说,初一的时候就开始动笔了,写了撕,撕了写,觉得自己写的太不好了,谁让我语文那么差,一直构思这的一个故...
    独行向日葵阅读 299评论 0 1
  • 我有一部旧时的手机 放在包里 充着电 开着机 缴着费 但我从来不用 你记得号码 我知道你不会打
    折青蛙阅读 533评论 0 10