我使用retrofit2上传图片时遇到问题。
有时当我的互联网连接很弱(比如我下载的东西)时,我的移动应用程序无法将图片上传到服务器而应用程序会抛出此异常:
java.net.ProtocolException: expected x bytes but received y
我用来上传图片的代码非常简单:
val body = RequestBody.create(MediaType.parse("image/jpg"), image)
ApiService.create().uploadImage(body)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe({ result ->
Log.d("NoError", result.toString())
}, { error ->
Log.d("FatalError", error.toString())
},
{}
)
我的问题是: 如何解决这个问题? 我应该实现重试逻辑吗? 还有另一种在Retrofit2上传文件/图像的方法吗?