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種の伝達対象
先日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); }
调用
2番目のダイレクト文字列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(){ }); RequestBodyオブジェクトの作成/** * 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 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
技術は一般的にみんなに自分の意見を出してほしい.