前方高能--Retrofit

Retrofit

A type-safe REST client for Android and Java



Android中非常有名的网络框架

官网 :http://square.github.io/retrofit/

参考项目: http://square.github.io/okhttp/

Android 示例项目: https://github.com/goodev/RetrofitDemo



Retrofit vs Volley

http://instructure.github.io/blog/2013/12/09/volley-vs-retrofit/

提取一张图片

//API
public interface ApiService {
    @GET("/jobs")
    public void getJobs(Callback<Data> callback);
}
//RestClient
public class RestClient {

    private static final String BASE_URL = "https://yourapi.host.com";
    private ApiService apiService;

    public RestClient() {
        Gson gson = new GsonBuilder()
                .registerTypeAdapterFactory(new ItemTypeAdapterFactory())
                .setDateFormat("yyyy‘-‘MM‘-‘dd‘T‘HH‘:‘mm‘:‘ss‘.‘SSS‘Z‘")
                .create();

        RestAdapter restAdapter = new RestAdapter.Builder()
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .setEndpoint(BASE_URL)
                .setConverter(new GsonConverter(gson))
                .setRequestInterceptor(new SessionRequestInterceptor())
                .setClient(new OkClient(MySSLTrust.getUnsafeOkHttpClient()))
                .build();

        apiService = restAdapter.create(ApiService.class);
    }

    public ApiService getApiService() {
        return apiService;
    }
}
//MySSLTrust 的SSL信任
public class MySSLTrust {
    public static OkHttpClient getUnsafeOkHttpClient() {
        try {
            // Create a trust manager that does not validate certificate chains
            final TrustManager[] trustAllCerts = new TrustManager[] {
                    new X509TrustManager() {
                        @Override
                        public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
                        }

                        @Override
                        public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
                        }

                        @Override
                        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                            return null;
                        }
                    }
            };

            // Install the all-trusting trust manager
            final SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
            // Create an ssl socket factory with our all-trusting manager
            final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

            OkHttpClient okHttpClient = new OkHttpClient();
            okHttpClient.setSslSocketFactory(sslSocketFactory);
            okHttpClient.setHostnameVerifier(new HostnameVerifier() {
                @Override
                public boolean verify(String hostname, SSLSession session) {
                    return true;
                }
            });

            return okHttpClient;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

/**
 * add Headers fro every request
 * Created by Hanks on 2015/5/18.
 */
public class SessionRequestInterceptor implements RequestInterceptor {
    @Override
    public void intercept(RequestFacade request) {
        /*request.addHeader("Accept", "application/json;versions=1");
        if(isUserLoggedIn()){
            request.addHeader("Authorization",getToken());
        }*/
            request.addHeader("Authorization","huhu=");
    }
}
时间: 2024-10-08 11:32:52

前方高能--Retrofit的相关文章

Rxjava+ReTrofit+okHttp深入浅出-终极封装

Rxjava+ReTrofit+okHttp深入浅出-终极封装 背景: 学习Rxjava和retrofit已经很长时间了,功能确实很强大,但是使用起来还是有点复杂,代码的重复性太高,所以决定把基于retrofit和rxjava的处理统一封装起来,实现的功能: 1.Retrofit+Rxjava+okhttp基本使用方法 2.统一处理请求数据格式 3.统一的ProgressDialog和回调Subscriber处理 4.取消http请求 5.预处理http请求 5.返回数据的统一判断 效果: 封装

Android 网络开源库之-retrofit的解析详解

前言 当前的网络开源库有许多,如volley,okhttp,retrofit等,这三个库当前是比较火的,其中,okhttp和retrofit由square团队开发.关于这三个库的区别,请移步stackoverflow或者知乎查看.开发过程中选择什么样的开源库需要更具我们APP来做出选择.我们选出stackoverflow中的一段话来看下. 上面说,需要与web service通信的时候,我们使用retrofit.百度百科 web service介绍,那么我们见天就来了解下retrofit.

Retrofit 入门学习

Retrofit 入门学习官方RetrofitAPI 官方的一个例子 public interface GitHubService { @GET("users/{user}/repos") Call<List<Repo>> listRepos(@Path("user") String user); } 这些注解都有一个参数 value,用来配置其路径,比如示例中的 users/{user}/repos, 我们还注意到在构造 Retrofit

Retrofit Token过期自动刷新并重新请求接口

在有心课堂的群里,有网友提出如下场景: 当前开发的 App 遇到一个问题: 当请求某个接口时,由于 token 已经失效,所以接口会报错. 但是产品经理希望 app 能够马上刷新 token ,然后重复请求刚才那个接口,这个过程对用户来说是无感的. 请求 A 接口->服务器返回 token 过期->请求 token 刷新接口->请求 A 接口 我们应该是怎么解决这个问题呢? 经过百度搜索到了相关信息,这里总结下. 本文是采用RxJava + Retrofit来实现网络请求封装. 实现原理

Retrofit——A type-safe HTTP client for Android and Java(The first part)

一,介绍 Retrofit将你的http接口API转换成项目中的一个java的接口. public interface GitHubService { @GET("users/{user}/repos") Call<List<Repo>> listRepos(@Path("user") String user); } Retrofit会自动为上面的Service生成一个实现类. Retrofit retrofit = new Retrofit

Retrofit自定义GsonConverter处理请求错误异常处理

通常从服务端拿到的JSON数据格式大概如下: { "code":1, "message":"查询成功", "detail":{"aa":"123","bb":"123","cc":"123"} } 因此通常我们会定义一个实体类来解析对应的json: public class Response { @Seria

RxJava 与 Retrofit

RxJava 与 Retrofit

Retrofit+RxJava(1)-在Android Studio中配置

在build.gradle中添加 //加入retrolambda需要的plugin声明 apply plugin: 'me.tatarka.retrolambda' //retrolambda的编译路径依赖 buildscript { dependencies { classpath 'me.tatarka:gradle-retrolambda:3.1.0' } } //让IDE使用用Java8语法解析 android { compileOptions { sourceCompatibility

Retrofit结合RxJava个人使用经验

Retrofit出来也蛮久了,每次听其他小伙伴说起来都是那种吊吊的感觉,所以自己也赶紧加入其中,用完之后感觉真的很棒,当然学习的时候也是遇到不少问题,爽歪歪的感脚.具体该怎么用Retrofit,推荐鸿洋的文章Retrofit2 完全解析 探索与okhttp之间的关系 ,写的比较清楚,我也不多花笔墨在这上面了,下面要说的是我个人使用Retrofit遇到的一些问题. 首先是引用库了,在module的build.gradle文件中添加 compile 'io.reactivex:rxjava:1.1.