前言
Retrofit2.x
可以说是已经用的滚瓜乱熟的通讯框架了。但是今天在使用的时候,依然遇到了两个奇葩问题。今天就记录下。
今天涉及知识点:
- url 请求 出现问题
- 收到数据解析出现问题
- 解决办法
更多精彩内容,请关注微信公众号 "Android进击",大家一起来学习进步吧
一. url 请求 出现问题
一般我们在用Retrofit2.x
做数据请求框架的时候。都是先在Base_url
中写一段url链接,类似如下:
private static final String BASE_RELEASE_URL = "https://xxxx.xx.xx:xxxx/xxx/";//url以"/"结尾
然后再在请求数据的ApiService
接口中写另一半含参的url
,类似如下:
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
这是因为整个链接正好是前面拼接后面成完整链接,如下:
https://xxxx.xx.xx:xxxx/xxx/users/{user}/repos
但是我今天遇到一个奇葩链接,整个链接如下:
https://xxxx.xx.xx:xxxx/id=xxx
然后我的Base_url
就直接是https://xxxx.xx.xx:xxxx/
,然后写ApiService
接口中方法的时候就犯难了(注:我写的是Get
请求),因为Get
请求就直接是个参数了,于是我像下面这样写api
中的Get
请求:
@GET
Observable<ResponseData> getRealTimeData(@Query("id") String id);
结果运行的时候,报如下错误:
java.lang.IllegalArgumentException: Missing either @GET URL or @Url parameter.
这是一个问题。
二.收到数据解析出现问题
第二个问题:
我们一般接收数据的时候 都是接收标准的 json
字符串,所以直接用Gson
接收就ok,但是今天遇到的返回数据比较奇葩,类似如下的字符串:
a=1,b=2,c=3,d=4
这个用标准gson
解析接收的时候,报如下错误:
errorMessage=Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $
也就是接收数据时出现Json
解析出错。
三. 解决办法
基于以上两个问题的解决方案,下面来一 一解答。
网友评论