改造没有像预期的那样构建网址Android

时间:2016-09-01 09:31:53

标签: android url retrofit

在这个得到的库中,我试图实现一个像这样的简单网址..... 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是得到的?标记,我试图实施更多那个月,我尝试了这个库的每个可能的解决方案。 无论如何没有任何作用,我想要的是建立一个像这样的简单该死的网址

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

在世界上我甚至可以构建这样的URL?因为以上所有都是不正确的,不起作用!

2 个答案:

答案 0 :(得分:0)

我认为您的问题的解决方案是添加查询参数... 请尝试使用以下链接查找如何在网址中进行查询。

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

答案 1 :(得分:0)

这不是Retrofit的错。这是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有关重写的信息。

请说明您的网址。否则没人会帮忙。希望这可以帮助 :) 升