单独使用Retrofit2 大概是不会用 不配合Rxjava+mvp的话感觉会很多代码 感觉略显臃肿吧
以一个登陆为简单的例子吧 先要有一个登陆接口 然后将实体类传入 实际上内部是转换成了json 发送到远端服务器返回后
通过response.body 来获取到你想要得到的对象实体
public class SignEntity { public static final String NATIVE="native"; public static final String OAUTH="oauth2"; public String gt; /*native and oauth2*/ public String type; /*Firebase用来统计appinstanceid*/ public String app_instance_id; public SignEntity(String gt,String type,String app_instance_id) { this.gt = gt; this.type=type; this.app_instance_id=app_instance_id; } }
public interface PostLogin_Interface { @POST(UrlConfig.LOGIN)//Authorization 就是设置的请求头Body发送的请求体UserEntity 是返回实体类型 Call<UserEntity> getCall(@Header("Authorization") String userToken, @Body SignEntity values); }
这里通过okhttp来设置想对的 超时时间
public class HttpClentUtils { /** * 获取okhttp对象设置联网请求超时信息 * * @return */ public static OkHttpClient getOkhttpClient() { OkHttpClient.Builder builder = new OkHttpClient.Builder(); OkHttpClient client = builder.readTimeout(10, TimeUnit.SECONDS) .addInterceptor(new Interceptor() { @Override public okhttp3.Response intercept(Chain chain) throws IOException { Request request = chain.request(); request.newBuilder().addHeader("Content-Type", "application/json;charset=UTF-8").build(); return chain.proceed(request); } }) .connectTimeout(5, TimeUnit.SECONDS).writeTimeout(10, TimeUnit.SECONDS)//设置超时 .build(); return client; } }将得到的httpclient 设置给
Retrofit retrofit = new Retrofit.Builder() .baseUrl(UrlConfig.BASE_URL) // 设置 网络请求 Url .client(okhttpClient) .addConverterFactory(GsonConverterFactory.create()) //设置使用Gson解析(记得加入依赖) .build();Call<LoginConsumeBackEntity> call = request.getCall("Bearer " + userToken, sign); call.enqueue(new Callback<LoginConsumeBackEntity>() { @Override public void onResponse(Call<LoginConsumeBackEntity> call, Response<LoginConsumeBackEntity> response) {//返回结果} @Override public void onFailure(Call<LoginConsumeBackEntity> call, Throwable t) {//返回错误} });