【发布时间】:2017-01-03 07:02:41
【问题描述】:
我有一个 Android 应用程序与使用 RQL 的 API(带有 OAuth v1 的泽西)进行通信。这是通过使用 Retrofit 2 库来完成的。
为了限制我获取的数据,将 limit(limit, offset) 参数添加到 URL。这并不容易,因为 Retrofit 不允许我向 URL 添加空参数。
例如,这是我的基本 URL:api.acme.com/v1,这是用户端点:api.acme.com/v1/users。但是当我想限制返回用户的数量时,我想使用api.acme.com/users?limit(10,2)。
因为没有选项可以添加没有值的变量名参数,所以唯一没有返回错误的方法是像这样生成 url:
@GET Call<UserList> getUsers (@Url String path);
并传递此 URL:http://api.acme.com/users?limit(10,2)
返回的错误是{"error":1,"error_name":"OAUTH_SIGNATURE_EXCEPTION","error_message":"The OAuth signature is invalid"}
这是因为在生成 OAuth 签名时没有将空参数添加到 URL 中。 Postman 可以选择将这些空参数添加到签名中,但我似乎在 Retrofit 中找不到这个选项。有任何想法吗 ?向我的 URL 添加空参数的其他选项也总是受欢迎的! 我已经尝试过使用 Map、Paths 和 Query,但没有结果。
【问题讨论】:
-
“空参数不加到URL”是什么意思?
-
您可以控制网络服务吗?
-
@Emma 本例中的空参数为“limit(10,2)”(没有值的键) 用于OAuth签名的生成,不添加空参数。在 Postman 中有一个添加这些的选项,但我在改造中找不到这个选项
标签: android oauth retrofit retrofit2