使用 GET 方法在改造 url 中编码

Posted

技术标签:

【中文标题】使用 GET 方法在改造 url 中编码【英文标题】:Encoding in retrofit url with GET method 【发布时间】:2020-01-07 15:32:36 【问题描述】:

我无法在我的 URL 端点中添加特殊字符“&”。 这是我的api接口

@GET("api/v1/products/artworks/")
    Call<TaskData> getLatestTaskData(@Header("Authorization") String token,
                                     @Query("limit") Integer limit,
                                     @Query("offset") String offset);

被调用的 URL

artworks/?limit=50&offset=0%26ordering%3D-artwork

这就是我调用 api 的方式

String url = Integer.toString(totalitemsCalledLatest) +"&ordering="+ ordering;

                        Call<TaskData>

                            call = taskApiInterface.getLatestTaskData("Token "+ user_token, 50, url);

我的排序字符串类似于 &medium=1&base=2 但它会自动将 & 转换为 %26 和 = 转换为 %3D

【问题讨论】:

【参考方案1】:

编辑:假设您遇到与 api 的连接问题,我认为您只需要从 GET URL 的末尾删除“/”,如下所示:api/v1/products/artworks 或至少这是一个帮助您更接近解决问题的解决方案

【讨论】:

我的 GET URL 中的一切都是正确的,我只想附加最后一个带有 & 和 = 符号的参数,但它将它们分别转换为 %26 和 %3D 你能给我一个正确请求的例子吗? 我的正确请求看起来像这个 products/artworks/?limit=50&offset=0&ordering=-artwork Retrofit 会自动转换字符串字符,因此如果您尝试在请求中添加另一个查询/参数,最好像其他参数一样将其添加为 @Query。所以你会有第四个订购 不,我的排序字符串类似于 &medium=1&base=2 ,它将 & 转换为 %26 并将 = 转换为 %3D

以上是关于使用 GET 方法在改造 url 中编码的主要内容,如果未能解决你的问题,请参考以下文章

如何将int值附加到android中改造的GET url

改造 2 - 动态 URL

未找到改造注释。 (参数#1)

在遗留应用程序中使用 url 重写来改造 csrf

改造 2 - URL 查询参数

如何在改造调用中设置 url 的静态结尾