最近在學習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
最后 附上一張帥圖 接着趕路:
