在使用Retrofit的時候若是隻是有幾個參數咱們能夠用@Querry的形式,而後須要使用','隔開git
可是在須要@Querry的參數多了以後,若是再用上面的方式就會形成參數寫了一大堆的麻煩事github
因此Retrofit就提供了@Body 的形式來幫助咱們處理這種事務json
下面看代碼吧服務器
public interface LoginApiService { @Headers({"Content-Type: application/json","Accept: application/json"}) @POST("server?") Observable<GetLoginJson> Login(@Body RequestBody body); }
這是他的API接口,須要在開頭@Header 而後後面的值。。。。。( ▼-▼ )!講道理我如今還沒弄明白爲啥這樣寫,有啥規律可循,後面搞懂了再來補上app
補上:!post
Content-Type 表示請求信息的格式,這個在Spring MVC裏有應用
而後application/json 就表明json數據格式,固然還有不少其餘的格式,這個有興趣能夠去查閱一下
/***20161125修改**/this
無心間在簡書上找到了@Header和@Headers的說明spa
@Header:header處理,不能被互相覆蓋,用於修飾參數,code
//動態設置Header值 @GET("user") Call<User> getUser(@Header("Authorization") String authorization)
@Headers 用於修飾方法,用於設置多個Header值:server
@Headers({ "Accept: application/vnd.github.v3.full+json", "User-Agent: Retrofit-Sample-App" }) @GET("users/{username}") Call<User> getUser(@Path("username") String username);
。。。。。( ▼-▼ )!表示仍是不懂Headers的寫法啊
引用自簡書做者@BoBoMEe
/***20161125編輯 end**/
而後你須要作的是封裝一個Post請求的類
public class PostInfo { private PostInfoBean postInfoBean; public PostInfoBean getPostInfoBean() { return postInfoBean; } public void setPostInfoBean(PostInfoBean postInfoBean) { this.postInfoBean = postInfoBean; } public class PostInfoBean{ private String command; private String posModel; private String posSn; private String posMac; private String userId; private String passWord; /**get 省略*/ /**set 省略*/ }
而後使用Retrofit的時候在你實例了ApiService那個接口以後,還須要實例化一個請求Header
實例化完成以後因爲我這邊服務器接收的是Json類型的請求,我還須要用Gson將他轉成Json字符串的形式,而後再(很重要)經過RequestBody(包含於Okhttp包中)類轉化爲RequestBody,以後再調用API接口便可
LoginApiService loginApiService = mRetrofit.create(LoginApiService.class); PostInfo postInfo = new PostInfo(); PostInfo.PostInfoBean postInfoBean = postInfo.new PostInfoBean(); postInfoBean.setCommand("xxx"); postInfoBean.setPosModel("xx"); postInfoBean.setPosSn(getPhoneSn()); postInfoBean.setPosMac(getPhoneMac()); postInfoBean.setUserId("xx"); postInfoBean.setPassWord("xx"); postInfoBean.setVersion("xx"); postInfo.setPostInfoBean(postInfoBean); Gson gson = new Gson(); String postInfoStr = gson.toJson(postInfoBean); RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"),postInfoStr); loginApiService.Login(body) .xxx.xxx;