美文网首页
Retrofit2.x遇到的问题

Retrofit2.x遇到的问题

作者: 奔跑的佩恩 | 来源:发表于2020-09-05 22:41 被阅读0次

    前言

    Retrofit2.x可以说是已经用的滚瓜乱熟的通讯框架了。但是今天在使用的时候,依然遇到了两个奇葩问题。今天就记录下。

    今天涉及知识点:

    1. url 请求 出现问题
    2. 收到数据解析出现问题
    3. 解决办法

    更多精彩内容,请关注微信公众号 "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解析出错。

    三. 解决办法

    基于以上两个问题的解决方案,下面来一 一解答。

    3.1 url 请求问题

    相关文章

      网友评论

          本文标题:Retrofit2.x遇到的问题

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