我目前正在发送一个带有追溯功能的Android应用程序的订单对象2
@PUT("orders/insert")
Call<Order> putOrders(@Body Order order);
我的ASP核心Web API如下:
[HttpPut("api/orders/update")]
public async Task UpdateOrder([FromBody] Order order)
{
await OrdersRepository.UpdateOrder(order);
}
但现在我还想在我的请求中附加一个图像。最初,我尝试在我的Android应用程序中将图像转换为byte[]数组,并将其作为order对象的一部分传递,但结果在API中获得了一个空顺序(较小的字节数组似乎可以工作),因此我决定以多部分正文请求的形式发送图像。
我的问题是,我不确定是否在revifit2中正确地创建了请求,也不知道如何在API中将请求从请求处理为文件和订单对象,因为只有一个[frombody]属性。
这就是我如何定义我的回顾界面2
@Multipart
@POST("uploadAttachmentorders/uploadfile")
Call<Order> uploadSignature(@Part MultipartBody.Part filePart, @Part("Order") Order order);
这就是实际通话的样子:
Order order = orders.getOrders().get(0);
File clientSignatureFile = new File(context.getCacheDir(),order.getId().toString());
clientSignatureFile.createNewFile();
FileOutputStream fos = new FileOutputStream(clientSignatureFile);
fos.write(order.getClientSignature());
fos.flush();
fos.close();
MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", clientSignatureFile.getName(), RequestBody.create(MediaType.parse("image/*"), clientSignatureFile));
Call<Order> callFile = apiService.uploadSignature(filePart,order);