【问题标题】:Retrofit Not building url as expected Android改造未按预期构建 url Android
【发布时间】:2017-01-09 02:51:55
【问题描述】:

在这个库中,我试图实现一个像这样的简单 url .....http://www.retrofitHorrible.com/somePath/someAnother/?searchCriteria[tooHorrible] 等等。问题是我猜 Retrofit 没有像我这样尝试处理这种情况

 @GET("somePath/someAnother/")
    Call<ProductModel> getProductsList(@Query("searchCriteria") String appendedUrl);

这部分会给我这样的网址

?searchCriteria=searchCriteria[tooHorrible]...这个网址是什么? 无论如何,如果我尝试使用

@Path(value="searchCriteria" encoded=false)

它会给我像%3FsearchCriteria[tooHorrible] 这样的网址,%3F 在哪里?标记我正在尝试实施 MORE THEN MONTH 并且我尝试了该库的所有可能解决方案。 无论如何,没有任何效果,我想要的是建立一个像这样的简单该死的网址

?searchCriteria[tooHorrible] is this too much for asking for this library?

我怎么能建立这样的 URL?因为以上都是不正确的,不会起作用的!

【问题讨论】:

  • 什么是?searchCriteria[tooHorrible]?查询是 ?key=value 而不是 [ 和 ]
  • 它是一个 URL,我通过它访问一些列表,它与任何请求制造者一起工作它应该以这种方式构建
  • 您的网址的哪一部分发生了变化? searchCriteriatooHorrible?

标签: android url retrofit


【解决方案1】:

我认为您的问题的解决方案是添加查询参数... 试试下面的链接,了解如何在 url 中查询。

https://futurestud.io/blog/retrofit-multiple-query-parameters-of-same-name

【讨论】:

  • 请仔细阅读.....正如我所说,我已经尝试过了,它给我的不是 ?searchCriteria 而是 ?searchCriteria=searchCriteria 这是不正确的 url
  • 那么我认为您应该更改您传递的 String appendUrl 的值...只发送太可怕的部分
  • 在给定的代码中......@GET("somePath/someAnother/")......去掉最后的斜线......新的代码看起来像这样...... . @GET("somePath/someAnother")
【解决方案2】:

这不是改造的错。这是 apache 解释请求的方式。

你犯了两个错误: 1:为您的查询参数传递值,否则 apache 不会得到它。正确检查 API 文档。 2:但是,如果您想使用没有查询参数值的 URL 重写 URL 规则,方法是在您的服务器上创建一个 .htaccess 文件,如下所示:

RewriteCond %{QUERY_STRING} (?:^|&)searchCriteria[tooHorrible]$
RewriteRule ^api/?$ xyz.php?searchCriteria=tooHorrible[NC,L]

我想这就是你想要的。 查看this 链接以获取有关重写规则的更多信息。查看this 链接以获取有关正则表达式的信息。Good Article 关于重写。

请说明您的网址。否则没有人能够提供帮助。希望这可以帮助 :) l

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-21
    • 2016-03-02
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2014-05-28
    相关资源
    最近更新 更多