美文网首页
使用retrofit2.http链接路径不UrlEncode编码

使用retrofit2.http链接路径不UrlEncode编码

作者: 苍蝇的梦 | 来源:发表于2022-12-09 11:14 被阅读0次

    2022-12-10 遇到的一点小问题

    之前的网络请求方法是从网上找到,先设置baseUrl,然后设置路径和请求参数。

            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(url)
                    .addConverterFactory(StringConverterFactory.create())
                    .client(new OkHttpClient.Builder())
                    .build();
            AppInterface app = retrofit.create(AppInterface.class);
            Call<String> call = app.getInfo("python/test/", map);
            call.enqueue(callback);
    
    public interface AppInterface {
        @GET("{param}")
        Call<String> getInfo(@Path("param") String param, @QueryMap Map<String, String> map);
    
        @GET("php/test")
        Call<String> getInfo(@QueryMap Map<String, String> map);
    }
    

    不过最近有个接口遇到错误,才知道使用@Path()去设置路径,会自动编码,比如“python/test/”会变成“python%2Ftest”。提前把路径写好,路径太多又很麻烦。
    网上找了下,看到是时候客观评价Retrofit了,这几点你必须明白,找到了答案,记录一下。

    public interface AppInterface {
        @GET
        Call<String> getInfo(@Url String url);
    
        @GET
        Call<String> getInfo(@Url String url, @QueryMap Map<String, String> map);
    
        @POST
        Call<String> postInfo(@Url String url, @Body RequestBody map);
    }
    

    不使用@Path(),使用@Url

    public @interface Url

    试了下,有些参数少的。在提交时还可以 路径+?+key=value 就可以,不用特地写个map。

    .

    顺便记录一下,个别接口需要参数按顺序提交的,可以把HashMap改成LinkedHashMap

    相关文章

      网友评论

          本文标题:使用retrofit2.http链接路径不UrlEncode编码

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