我是靠谱客的博主 可耐身影,最近开发中收集的这篇文章主要介绍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怎么说主线程不能进行网络操作,这个库不是可以自动切换线程的吗,害得我又开了一个线程。整体代码就不上了,写的很乱。

最后

以上就是可耐身影为你收集整理的Retrofit 上传二进制数据的全部内容,希望文章能够帮你解决Retrofit 上传二进制数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部