Retrofit 上传二进制数据

项目中有要上传一个二进制的图片的需求,网上搜了好久,也没有找到合适的办法。
之前尝试

public interface UpPicService {

    @POST("SelfStudy")
    Call<ResponseBody> postPic(@Body byte[] aab);
}

提示我出错

java.lang.IllegalArgumentException: Unable to create @Body converter for byte[]。

翻了翻官方文档

REQUEST BODY

An object can be specified for use as an HTTP request body with the @Body annotation.

@POST(“users/new”)

Call createUser(@Body User user);

The object will also be converted using a converter specified on the Retrofit instance. If no converter is added, only RequestBody can be used.

意思是如果没有明确说明,那么就只有RequestBody可以使用。我也不知道怎么才算是个明确说明,总之使用RequestBody就可以了。

接口更改为

public interface UpPicService {

    @POST("SelfStudy")
    Call<ResponseBody> postPic(@Body RequestBody aab);
}

将byte[]转为RequestBody

   RequestBody requestBody = RequestBody.create(MediaType.parse("image/jpg"), bytes);

结束!

upPicService.postPic(requestBody).execute();

这个execute怎么说主线程不能进行网络操作,这个库不是可以自动切换线程的吗,害得我又开了一个线程。整体代码就不上了,写的很乱。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值