最近在学习Retrofit2.0想用Retrofit + Dagger2 + RxJava + ButterKnife一起使用重构项目 一方面自己的demo随着业务逻辑的增多
显得非常的乱 另一方面代码和其他人合作写的繁多 重新看代码时往往业务逻辑从上往下看半天 好蛋疼==
最主要是 Retrofit + Dagger2 + RxJava + ButterKnife 搭配demo的特点是 代码简洁简洁简洁!!!爽!
不信请看这个:http://blog.csdn.net/finddreams/article/details/50849385(感谢这位作者)
好了 记录一下吧
Retrofit2.0 使用Post请求方式
@POST("get_smscode")
Observable<MsgInfoBean> getInfo(@Field("mobilePhoneNumber")String mobilePhoneNumber);
报错:@Field parameters can only be used with form encoding
到http://square.github.io/retrofit/去查 发现 少了 一句注释
@FormUrlEncoded加上就OK。
另外关于添加header
public static Retrofit getInstance() {
if(retrofit==null){
GsonConverterFactory gsonConverterFactory = GsonConverterFactory.create();
OkHttpClient okHttpClient = new OkHttpClient();
OkHttpClient.Builder builder = okHttpClient.newBuilder();
builder.retryOnConnectionFailure(true);
retrofit=new Retrofit.Builder().client(new OkHttpClient().newBuilder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request().newBuilder()
.addHeader("X-LC-Id",ConstanApi.APP_ID)
.addHeader("X-LC-Key",ConstanApi.APP_KEY)
.build();
return chain.proceed(request);
}
}).build())
.baseUrl(ConstanApi.baseUrl)
.addConverterFactory(gsonConverterFactory)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
}
return retrofit;
}
关于使用Retrofit的所有问题见:https://futurestud.io/blog/retrofit-add-custom-request-header
最后 附上一张帅图 接着赶路: