retrofit提交josn数据

一.提交JSON请求参数。

post-json的两种方式:

  @POST("user/login")
    Observable login(@Body RequestBody body);//构造一个RequestBody对象

    @POST("user/login")
    Observable login(@Body LoginInfo loginInfo);//构造一个实体对象

第一种方法:

JSONObject params = new JSONObject();
            try {
                params.put("mobile", "13888888888");
                params.put("smsType", "REG");

            } catch (JSONException e) {
                e.printStackTrace();
            }
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), params.toString());

RetrofitApi.login(requestBody);

第二种方法:

public class LoginInfo {
    public String mobile;
    publicString smsType;

    public LoginInfo(String mobile, String smsType) {
        this.mobile = mobile;
        this.smsType = smsType;
    }
}
LoginInfo loginInfo = new LoginInfo("13888888888", "REG");
RetrofitApi.login(loginInfo );

第二种方法,你需要为每一个不同的请求的对象创建一个不同的Model,因此大多数时候我们都是采用第一种方式。

二.添加header。

2.1 单独添加header。

 @Headers({"Content-Type: application/json;charset=UTF-8"})
    @POST("/login")
    Observable login(@Body LoginInfo loginInfo);//构造一个实体对象

2.2 统一添加header。

自定义拦截器。

public class HeaderInterceptor implements Interceptor {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request original = chain.request();
        Request.Builder requestBuilder = original.newBuilder()
                .header("token", "")
                .header("version", "1.0.0");
        Request request = requestBuilder.build();
        return chain.proceed(request);
    }
}

你可能感兴趣的:(retrofit提交josn数据)