Retrofit 2.3使用随文笔录

原创 2017年08月12日 11:54:30
  • 首先创建一个接接口
public interface RetrofitInterface {
//    https://api.douban.com/v2/movie/coming_soon?count=1
    /**豆瓣开放平台:
     * 正常参数拼接
     * */
     //first:第一种
    @GET("movie/coming_soon")
    Call<MovieBean> getMovie (@Query("count") int count);

    /**
     * @param 可以把{in_theaters}单独取出来,调用getMovie1时,可以让用户自己传递进来
     * */
     //second:第二种
    @GET("movie/{in_theaters}")
    Call<WillBean> getMovie1 (@Path("in_theaters") String s, @Query("count") int count);

    /**
     * 传map
     * */
     //three:第三种
    @GET("movie/in_theaters")
    Call<MapBean> getMap (@QueryMap Map<String,String> map);

    /**
     * 请求头:静态添加
     * 实际项目中一个一个接请求头太麻烦可,需要动态配置
     * 我公司真实项目的url地址
     * */
     * //这里的"userid:2820","appsign:1E0C31744A02922BB4B5EA98644A590738"}已改成错的了(公司的怕出啥问题)
    @Headers({"userid:282220","appsign:1E0C31744A02922BB4B5EA98644A59073811"})
    @POST("index/list.do")
    Call<HomeDataMolde> addHeader (@QueryMap Map<String,String> map);

    /*
    * 请求头:动态添加
    *  我公司真实项目的url地址
    * **/
    //four:第四种
    @POST("index/list.do")
    Call<HomeDataMolde> addHeader1 (@QueryMap Map<String,String> map);

}
  • 有请求头和无请求头抽成了两个方法,方便使用
/**无请求头*/
 public static RetrofitInterface retrofitGet() {
        Retrofit builder = new Retrofit.Builder()
                .baseUrl("https://api.douban.com/v2/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        RetrofitInterface retrofitInterface = builder.create(RetrofitInterface.class);
        return retrofitInterface;
    }
 /**
     * 有请求头的
     */
    public static RetrofitInterface retrofitGetAddHead() {
        /**
         * 配置请你求球头
         * */
        //添加拦截器
        OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request request = chain.request();
                Request.Builder builder = request.newBuilder();
                //这里userid  appsign 也改成错的了
                Request build = builder.addHeader("userid", "282220")
                        .addHeader("appsign","1E0C31744A02922BB4B5EA98644A59073811")
                        .build();
                return chain.proceed(build);
            }
        }).retryOnConnectionFailure(true)//客户端出现连接性问题时,进行重试
                .build();

        /**
         * addCallAdapterFactory 影响的是 :  Call<HomeDataMolde> addHeader (@QueryMap Map<String,String> map);
         * Call 默认支持的  要想支持Observable  就需要添加addCallAdapterFactory
         * */
        Retrofit builder = new Retrofit.Builder()
                .client(okHttpClient)
                .baseUrl("http://116.62.120.127:8085/")
                .addConverterFactory(GsonConverterFactory.create())
//                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        RetrofitInterface retrofitInterface = builder.create(RetrofitInterface.class);
        return retrofitInterface;
    }
  • first:第一种
  /**
     *参数作为url的一部分:正常请求(url传参拼接)"
     * */
    public void gethttp(View view) {
        RetrofitUtils.retrofitGet()
                .getMovie(2)
                .enqueue(new Callback<MovieBean>() {
                    @Override
                    public void onResponse(Call<MovieBean> call, Response<MovieBean> response) {
                        tv.setText(response.body().getSubjects().get(1).getTitle());
                        Log.e("Retrofit", response.toString());
                        Log.e("gethttp", response.body().getSubjects().toString());
                    }

                    @Override
                    public void onFailure(Call<MovieBean> call, Throwable t) {

                    }
                });

    }

Log日志:
这里写图片描述

  • second:第二种
/**
     * url:参数拼接  in_theaters用户传递
     * */
    public void getWillStart(View view) {
        RetrofitUtils.retrofitGet()
                .getMovie1("in_theaters",3)
                .enqueue(new Callback<WillBean>() {
                    @Override
                    public void onResponse(Call<WillBean> call, Response<WillBean> response) {
                        Log.e("in_theaters", response.toString());
                        Log.e("第二种:电影名字getWillStart", response.body().getSubjects().get(2).getTitle());
                    }

                    @Override
                    public void onFailure(Call<WillBean> call, Throwable t) {

                    }


                });
    }

Log日志:
这里写图片描述

  • three:第三种

    /**
     * 传递map
     * */
    public void getMap(View view){
        subjects1.clear();
        Map<String,String> map=new HashMap<>();
        map.put("count",String.valueOf(12));
        RetrofitUtils.retrofitGet()
                .getMap(map)
                .enqueue(new Callback<MapBean>() {
                    @Override
                    public void onResponse(Call<MapBean> call, Response<MapBean> response) {
                        Log.e("map", response.toString());
                        MapBean body = response.body();
                        List<SubjectsBean> subjects = body.getSubjects();
                        for (int i=0;i<subjects.size();i++){
                            subjects1.add(subjects.get(i));
                            Log.e("列表集合", subjects1.size()+"...");
                        }
                        Message msg=new Message();
                        msg.what=REGRESH;
                        msg.obj=subjects1;
                        mHandler.sendMessage(msg);
                    }

                    @Override
                    public void onFailure(Call<MapBean> call, Throwable t) {

                    }
                });
    }

log日志:
这里写图片描述

  • four:第四种
 /**
     * 添加header
     * */
    public void addHeader(View view){
        final Map<String,String>map=new HashMap<>();
        map.put("showType","0");
        map.put("pageIndex",String.valueOf(1));
        map.put("pageSize",String.valueOf(10));
        RetrofitUtils.retrofitGetAddHead()
                .addHeader1(map)
                .enqueue(new Callback<HomeDataMolde>() {
                    @Override
                    public void onResponse(Call<HomeDataMolde> call, Response<HomeDataMolde> response) {
                        Log.e("Retrofit请求的url", response.toString());
                        Log.e("Retrofit1000请求成功", response.body().getCode()+".......");
                        List<HomeDataMolde.DataBean> data = response.body().getData();
                        Log.e("Retrofit集合数据长度:", data.size()+".......");
                        Log.e("Retrofit_getNickname", data.get(2).getUserModel().getNickname()+".......");

                    }

                    @Override
                    public void onFailure(Call<HomeDataMolde> call, Throwable t) {

                    }
                });
    }

Log日志:
这里写图片描述

本文没什么讲解,主要是本人学习时的随文笔记!这个框架只需要会用就可以了,没必要非得研究他的原理!

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android Studio修改项目目录结构

一般比较早期的项目都是eclipse结构的,可是在现如今Android Studio是官方唯一标准的年代不用Android Studio就似乎有点儿掉队。可是有些公司由于种种原因却不能直接改成gr...

Map按照值降序排列

List entryList = new ArrayList(ruleMap.entrySet()); Collections.sort(entryList, new Comparator() { ...

retrofit2.3随文笔录

  • 2017年08月12日 11:58
  • 25.9MB
  • 下载

《android课表》之的表格界面的编写(button不随文本字数的变化而变化)

最近突然有想给自己写个课表的冲动,但是当想制作课表的界面时,第一步最遇到问题了。本来我想一周的课表按理想中那样显示文本。 其中有课程的颜色的都是按钮。。也就是说整个界面都布满了按钮。刚刚开始使用变表格...
  • SpeedMe
  • SpeedMe
  • 2012年09月29日 23:20
  • 4823

【Android】布局——图片紧随文字

【关键词】 Android 图片紧随文字 多行文字挤压图片 【问题】 实现如效果图的布局,其中中间部分的文字和图片是紧挨着的;要考虑适配情况,文字太多的时候,如果处理不当,图片会被挤压出去,看不...

Unity编程笔录-wikitude简单介绍和使用Android Studio打包apk

前言:wikitude也是一款实现AR技术的插件,此文就是使用Unity+wikitude来做一个简单案例,重点是Android Studio打包apk这块,因为目前来说不管是wikitude还是vu...

【随心笔录】Android AIDL使用,实现跨进程通信

Android AIDL使用,实现跨进程通信

CentOS5.6下使用cmake编译MySQL5.5.13源码和安装笔录

一、准备环境1、    安装确保以下系统相关库文件gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libmcrypt* libtoo...
  • setoy
  • setoy
  • 2011年06月24日 17:18
  • 469

【随心笔录】Android N 文件Uri传递,报出FileUriExposedException异常,使用FileProvider

一、问题原因 报出FileUriExposedException异常,官网上搜索,发现在Android N的behavior-changes里面,有一些关于 FileUriExposedExcepti...

组态王与stm32通讯笔录-组态王报文分析

上篇文章总结分析了组态王可以与stm32实现通讯,接下来谈一下,组态王怎么能实现对stm32的控制及查询接受数据。 一、上位机组态王 1、建立I/O变量。 首先说一下I/O变量和内存变量的区别及...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Retrofit 2.3使用随文笔录
举报原因:
原因补充:

(最多只允许输入30个字)