Retrofit学習"Content-Type:アプリケーション/json;charset=UTF-8"@Bodyの使用

6909 ワード

事前にこの実践を宣言するのはRetrofit 2+rxjavaの下で使うので、callを使うのではありませんて、使うobservableで、原理は同様にあなたを助けることができることを望みます
先日Retrofitを学んで、ちょうど自分のプロジェクトの古いフレームワークからRetrofitに変換することに出会った人がいて、postを使ってキー値を伝達することに慣れている私にとって、突然一部の伝達パラメータが「Content-Type:application/json;charset=UTF-8」のインタフェースで、これは何の鬼ですか、Retrofitはどのように呼び出しますか.それから自分でネットの文章を見てこの@Bodyの注釈を発見して、@Bodyの使用を書いてみます.
bodyはjavaオブジェクトを直接伝達する2つの方法を使用することができます.このオブジェクトはgsonによってjson文字列に解析されることができます.もう1つはRequestBodyオブジェクトを伝達することです.実際には、その方法で最後に伝達されるパラメータはjson形式です.
第1種の伝達対象
/**
 * Created by    on 2016/11/11 0011.
 */

public interface Api {
//    @FormUrlEncoded             ,        ,     ,          ,        ok 。。
//    @POST()
//    Observable listRepos(@Url String url,@FieldMap Map params);
 
  
      @POST("login.jhtml")
      @Headers({ "Content-Type: application/json;charset=UTF-8"})
      Observable addUser(@Body Login_user body);
}
 
  

调用

 
  
Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(MySettings.REQUESTURI)  // url
        .addConverterFactory(GsonConverterFactory.create())//gson  
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//rxjava
        .build();
Api api =retrofit.create(Api.class);
Observable observable= api.addUser(url,Login_userd   );
observable.subscribeOn(Schedulers.io())                 //        
        .unsubscribeOn(AndroidSchedulers.mainThread())  //               
        .observeOn(AndroidSchedulers.mainThread())      //         
.subscribe(new Subscriber(){
    
    
});
2番目のダイレクト文字列
/**
 * Created by    on 2016/11/11 0011.
 */

public interface Api {

    @POST("login.jhtml")
    @Headers({ "Content-Type: application/json;charset=UTF-8"})
    Observable addUser(@Body RequestBody body);
}
RequestBodyオブジェクトの作成
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"),"     json   ");
呼び出し
Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(MySettings.REQUESTURI)  // url
        .addConverterFactory(GsonConverterFactory.create())//gson  
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//rxjava
        .build();
Api api =retrofit.create(Api.class);
Observable observable= api.addUser(url,RequestBody    );
observable.subscribeOn(Schedulers.io())                 //        
        .unsubscribeOn(AndroidSchedulers.mainThread())  //               
        .observeOn(AndroidSchedulers.mainThread())      //         
.subscribe(new Subscriber(){
    
    
});
呼び出しはこのパッケージの後を見ることができて、とても便利です
http://blog.csdn.net/qq_21174855/article/details/53259497
技術は一般的にみんなに自分の意見を出してほしい.