Retrofit使用类(get)

作者: 缘狄 | 来源:发表于2016-10-21 09:26 被阅读59次

    这几天在网上看了一些网络框架,感觉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请求暂时就理解了这些,可能有错误的地方,反正也是写给自己看的

    相关文章

      网友评论

        本文标题:Retrofit使用类(get)

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