在Android中改进制作空体的请求

时间:2015-12-16 05:21:26

标签: android json gson retrofit

我在android中使用Retrofit而GsonConverterFactory是转换器。

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://xxxxxxx.com")
            .addConverterFactory(GsonConverterFactory.create())
            .build();

我希望用body发送POST请求。

public class MasterRequest 
{
}


public class User extends MasterRequest
{
 @SerializedName("email")
 public String email = null;
}

 @POST("{path}")
Call<MasterResponse> registerUser(@Path("path") String path, @Body MasterRequest masterRequest);

path是附加基本URL的URL。

当我在父类引用(MasterRequest)中发送子类(“User”)对象时,转换器显示为空json; “{}”。

但是当我将User类对象发送到registerUser方法下面时,它工作正常。

@POST("{path}")
Call<MasterResponse> registerUser(@Path("path") String path, @Body User user);

如何在父类实例中发送子类对象来创建请求体?

1 个答案:

答案 0 :(得分:2)

这是Gson的工作方式。序列化多态对象的最简单方法是使用RuntimeTypeAdapterFactory。您可以找到详细的教程here。与Retrofit配合使用非常好!