hegaojian / JetpackMvvm

:chicken::basketball:一个Jetpack结合MVVM的快速开发框架,基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件 使用Kotlin语言,添加大量拓展函数,简化代码 加入Retrofit网络请求,协程,帮你简化各种操作,让你快速开发项目
https://github.com/hegaojian/JetpackMvvm
Apache License 2.0
3.13k stars 610 forks source link

服务器返回的内容就是一个字符串比如"/picth/2000/test.jpg",这个怎么处理? #50

Closed 429329513wanting closed 3 years ago

429329513wanting commented 3 years ago

现在如果返回不是json格式,就报解析错误。我想直接获取到这个字符串

hegaojian commented 3 years ago

可以使用不脱壳的请求方式,定义retrofit接口时 返回值定义为String

429329513wanting commented 3 years ago

现在遇到这种情况,返回的body是个网页格式 <!DOCTYPE html>

vm: var testResult = MutableLiveData<ResultState>() 接口定义: suspend fun test(@QueryMap params: HashMap<String,String>):String 请求方式 requestNoCheck({ apiService.baiduInfo(header = header,params = params)},testResult,true) 结果错误信息显示:解析错误,请稍后再试1001Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $

按理说不会去解析这个网页了,结果还是报解析错误。是因为字符串是网页格式的原因吗?还是说如果是非json格式字符串都会报这个错

hegaojian commented 3 years ago

试试将返回值定义为 any 接收 看有没有问题

429329513wanting commented 3 years ago

试试将返回值定义为 any 接收 看有没有问题

不行,同样的报错。感觉框架 处理 ResultState,还是涉及到解析了

hegaojian commented 3 years ago

让后台改改数据格式吧,这个应该是属于后台的工作,数据给的不规范,正常的不管成功失败,都应该返回一个固定的格式