android - 使用 Kotlin 的 Fragment 中的 Retrofit2 参数
问题描述
只要没有参数,我就可以毫无障碍地拨打电话。我知道,作为应用程序编程的初学者,这将是我错过的一件非常简单的事情,或者是一件过于复杂的事情,但这里就是这样。
我在片段中有一个接口,并且有这样的@Query:
interface RewardsApiService {
@GET("JSON/return-data.asp")
fun getCID(
@Query("cid") strCustomerID: String,
@Query("process") strProcess: String
)
fun getRewards(): retrofit2.Call<ResponseData<List<RewardsCards>>>
}
我的问题是:我在哪里定义和分配这些变量 strCustomerID 和 strProcess,以便接口可以使用它们?strCustomerID 是一个 SharedPreference。
解决方案
简短的回答是:你没有。Retrofit 会根据你用 , 等标记的内容自动生成@GET
代码@Query
。
你应该这样称呼它:
val call = service.getCID("foo", "bar")
然而,生成的调用将 url 看起来像这样:
[your base url]/JSON/return-data.asp?cid=foo?process=bar
所以请确保 url 与您想要的匹配。
除了改造特定的东西之外,还有一些更深层次的架构问题。我会看看https://developer.android.com/jetpack/guide并考虑稍微重组项目。
例如,您不想从片段中进行 API 调用。这引起了对可能在主线程或 UI 线程上执行 IO 的担忧,并且您最终可能会试图找出围绕它的崩溃。
至少,我建议将接口拆分到一个单独的文件中,并确保您的网络调用是在具有 IO 范围的协程内完成的。
推荐阅读
- r - 如何在 R 中扩展时间序列
- bokeh - 在 Bokeh 中的标题和绘图之间添加空格
- groovy - 如何在詹金斯管道中使用 groovy 解决没有方法签名的问题
- excel - 发生概率不同的随机数
- paypal - authorize.net paypal API 中是否提供 Paypal 语言选项?
- java - 无论堆大小如何,SBT 编译总是给出“超出 GC 开销限制错误”
- c# - 退出时保存表单设置
- node.js - 如何解决 Nodejs 和 NPM 之间的版本冲突?
- react-native - React Native Maps 参考问题
- r - 包括 0 个计数作为频率并创建新列