当前位置: 首页 > 面试题库 >

如何配置Square的Retrofit Client以处理具有可变数量参数的请求

桂和同
2023-03-14
问题内容

我正在构建一个Android应用程序,并且正在使用Square的Retrofit库进行短暂的网络调用。我是Java和Android的新手。到目前为止,我已经像这样构造了请求:

@GET("/library.php")
void library(
        @Query("one_thing") String oneThing,
        @Query("another_thing") String anotherThing,
        Callback<Map<String,Object>> callback
);

并这样称呼他们:

    service.library(oneThing, anotherThing, callback);

我需要实现一个接受可变数量(不超过10个左右)参数的请求。必须单独定义它们并传递null或为给定请求中不存在的传递一些东西,这很麻烦。有没有一种方法可以为请求定义接口,使其接受变量号或参数,并@Query为参数字典/映射中的每个元素自动构造s?像这样:

@GET("/library.php")
void library(
        Map<String,Object> parameters,
        Callback<Map<String,Object>> callback
);

service.library(parameters, callback);

在此先感谢您提供任何提示。

编辑:在这种情况下,为与请求不相关的参数传递null无效。理想情况下,我将能够@Query基于参数字典来设置/创建,这样,@Query如果键的值为空,则键将不会成为a 。

编辑:我正在专门寻找与GET请求一起使用的解决方案。


问题答案:

您可以始终尝试将参数作为HTTP正文传递,例如在此示例中(注意:我是作者)

但是,正如您建议的那样,请使用带有值的Map代替,这样可能对您有用:

@POST("/library.php")
public void library(@Body Map<String, Object> parameters, Callback<Map<String,Object>> callback);


 类似资料:
  • 问题内容: 我试图弄清楚如何在C扩展模块中具有一个函数的变量(也许有很多)参数。 阅读有关PyArg_ParseTuple的内容,您似乎必须知道要接受多少,一些强制性的和一些可选的,但都具有自己的变量。我希望PyArg_UnpackTuple能够处理此问题,但是当我尝试以似乎错误的方式使用它时,它似乎只会给我总线错误。 举个例子,将以下可能要放入扩展模块中的python代码(用C语言编写)。 这可

  • 我是Camunda的新手,没有找到任何教程或参考来解释如何实现以下目标: 当开始一个过程时,我希望用户在发票中添加任意数量的项目。在下一个用户任务中,所有这些项目及其数量都应该打印给批准数据的人。 我还不知道如何在一个过程和它的变量之间建立1:n的关系。我需要为每个项目启动子流程吗?或者我必须使用自定义Java对象吗?如果是这样,我如何从任务列表中将表单元素映射到这样的对象?

  • 在处理扫描仪输入时,我们可以使用var。。带sc.nextInt()的参数??例如(以下代码) 输出是ArrayIndexOutOfBoundsException: 1任何人都可以解释这一点...

  • 问题内容: 在Django视图中,你可以访问,因此在视图中你可以执行以下操作: 实际的request.GET[‘myvar’]对象类型是: 现在,如果要传递具有相同参数名称的多个变量,即: http://example.com/blah/?myvar=123&myvar=567 你想要为参数返回,然后执行以下操作: 但是,当你尝试仅获得url中传递的最后一个值时,即在上面的示例中,你将获得567,

  • 我真的很感激你能提供的任何帮助。

  • 问题内容: 是否可以配置GET方法以读取可变数量的URI参数并将其解释为可变参数(数组)或集合?我知道查询参数可以读取为列表/设置,但在我的情况下我无法使用它们。 例如: 提前致谢 问题答案: 如果我正确理解了您的问题,则注释可以采用正则表达式来指定路径组件列表。例如,类似: 还有一个更广泛的例子在这里。