【问题标题】:Android Annotations: Query params gets appended to url?Android注释:查询参数被附加到url?
【发布时间】:2025-12-02 00:45:02
【问题描述】:
@Get("/ServiceTest?version=1&dateRange={dateRange}")
ResponseModel getDateRangeTest(String dateRange);

在 RestClient 界面中进行如下获取

http://localhost:8080/ServiceTest/2014-01-29%25202014-01-29?version=1" resulted in 400 (Bad Request); invoking error handler

我在发送查询参数时做错了什么。

我想这样称呼:

/ServiceTest?version=1&dataRange=2014-01-29%25202014-01-29

在这种情况下,我无法使用 Android 注释生成 @Get

回答:我的调用不正确,主要问题是 uri 编码,正确的是

/ServiceTest?version=1&dataRange=2014-01-29%202014-01-29

【问题讨论】:

    标签: android android-annotations


    【解决方案1】:

    你可能做错了。

    你的服务器得到/ServiceTest
    但是您访问地址为/ServiceTest/2014-01-29%25202014-01-29的服务器

    小心您的服务器接收到 /ServiceTest?version=1&dateRange={dateRange} {dataRange} 是您打算作为变量提供的内容。

    你的地址应该是/ServiceTest?version=1&dataRange=2014-01-29%25202014-01-29

    == 编辑 ==

    我不熟悉Android Get annotation,但试试这个。

    @Get("/ServiceTest?version=1&dateStart={dateStart}&dateEnd={dateEnd}")
    ResponseModel getDateRangeTest(String dateStart, String dateEnd);
    

    并通过/ServiceTest?version=1&dataStart=2014-01-29&dateEnd=2014-01-29访问

    请注意,我将参数更改为更具体。这将是一个更好的方法。

    【讨论】:

    • @NavdeepSingh // 再看一遍。我加了。
    • 事实并非如此。 Android-Annotation 是罪魁祸首。
    • @NavdeepSingh // 你试过/ServiceTest?version=1&dataRange=2014-01-29%202014-01-29 吗?请参阅%2520%20 地址的差异。
    • 是的,这个编码的 URI,当我发送空格时应该转换为 %20 但在这里我可以看到 %2520
    • @NavdeepSingh // 你可以查看*.com/q/16084935/361100 链接。为什么不手动将 %2520 替换为 %20?