我正在使用 Retrofit 将一些数据发布回我的 WebAPI REST 服务。但是,如果我的模型包含 a byte[]
,则 WebAPI 接收到的值为 null。如果我删除该属性Signature
,则模型将按预期与其余值一起接收。
此外,将Signature
属性保留为 null 也可以。只有当签名有内容时,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) {
}
});
我的改造 DataService 方法如下所示:
@POST("/refunds")
void postRefund(@Body RefundDto model, Callback<RefundDto> callback);
我将其发送到以下休息方法:
public class RefundsController : ApiController
{
public RefundDto Post([FromBody]RefundDto value)
{
// value is null!
}
}