美文网首页
Kotlin+Retrofit上传文件报Parameter ty

Kotlin+Retrofit上传文件报Parameter ty

作者: 皖语 | 来源:发表于2019-08-16 16:25 被阅读0次

    采坑

    附上参考链接,侵权即删:https://blog.csdn.net/janronehoo/article/details/88955273

    上传图片接口NetService.kt中定义为

    @Multipart

    @POST(UrlDefinition.UPLOAD_IMAGE)

    fun uploadImage(@PartMap map: Map<String, RequestBody>): Observable<NetResult<String>>

    NetHelper中调用

    fun uploadImage(file: File, length: Int, width: Int, callback: (String) -> Unit, netFinish: (String) -> Unit) {

    val partMap = HashMap<String, RequestBody>()

    val pic = RequestBody.create(MediaType.parse("multipart/form-data"), file)

    partMap["file\";filename=\"" +"file.jpg"] = pic

    val lengthBody = RequestBody.create(MediaType.parse("multipart/form-data"),"" + length)

    val widthBody = RequestBody.create(MediaType.parse("multipart/form-data"),"" + width)

    partMap["length"] = lengthBody

    partMap["width"] = widthBody

    netApi.uploadImage(partMap)

    .asyncSchedulers()

    .subscribe(object : BaseSubscribe>() {

    override fun onNextData(mData: String) {

    callback.invoke(mData)

    }

    override fun onErrorData(code: Int, msg: String) {

    netFinish.invoke(msg)

    }

    })

    }

    结果报错:Parameter type must not include a type variable or wildcard

    参照链接中说加入@JvmSuppressWildcards注解,测试对我这边无用,真正原因是定义接口fun uploadImage(@PartMap map: Map<String, RequestBody>)时用的是Map??调用时传入的是HashMap<String, RequestBody>()???

    修改后NetService中上传接口

    fun uploadImage(@PartMap map: HashMap<String, RequestBody>): Observable<NetResult<String>>

    再次调用问题已解决。。。

    才疏学浅,记一下采坑,个人猜想估计是Kotlin对类型要求比较严格?希望各位大佬留言解释下,万分感谢

    相关文章

      网友评论

          本文标题:Kotlin+Retrofit上传文件报Parameter ty

          本文链接:https://www.haomeiwen.com/subject/sfwxgttx.html