Java Android-当模型包含一个字节[]时,改装接收为空

Java Android-当模型包含一个字节[]时,改装接收为空,java,android,asp.net-web-api,retrofit,Java,Android,Asp.net Web Api,Retrofit,我正在使用改型将一些数据发布回我的WebAPI REST服务。但是,如果我的模型包含字节[],则WebAPI接收的值为空。如果我删除属性签名,那么模型将与其他值一起按预期接收 另外,将签名保持为空也会起作用。只有当签名包含内容时,WebAPI才会收到空值 字节数组包含设备上捕获的PNG签名图像 这是我的模型,包含byte[]属性: public class RefundDto { public String Id; public String Amount; public

我正在使用改型将一些数据发布回我的WebAPI REST服务。但是,如果我的模型包含
字节[]
,则WebAPI接收的值为空。如果我删除属性
签名
,那么模型将与其他值一起按预期接收

另外,将
签名保持为空也会起作用。只有当签名包含内容时,WebAPI才会收到空值

字节数组包含设备上捕获的PNG签名图像

这是我的模型,包含
byte[]
属性:

public class RefundDto {
    public String Id;
    public String Amount;
    public int AssetId;
    public String Comments;
    public String DateCreated;
    public String DateModified;
    public int FaultId;
    public int RefundActionId;
    public int SiteId;
    public int UserId;

    public byte[] Signature; // The culprit
}
我使用以下代码发送我的模型:

RefundDto dto = getDto();
service.postRefund(dto, new Callback<RefundDto>() {
    @Override
    public void success(RefundDto dto, Response response) {
        DatabaseHandler db = new DatabaseHandler(context);
        db.deleteRefund(dto.Id);
        db.close();
    }

    @Override
    public void failure(RetrofitError retrofitError) {
    }
});

我设法解决了这个问题。我将
字节[]
更改为
字符串
,并将签名作为Base64编码字符串发送:

dto.Signature = new String(Base64.encode(getSignature(), 0));

我使用
byte[]
离开了服务器端模型,WebAPI负责转换。

这是我目前发现的唯一方法。
public class RefundsController : ApiController
{
    public RefundDto Post([FromBody]RefundDto value)
    {
        // value is null!
    }
}
dto.Signature = new String(Base64.encode(getSignature(), 0));