我正在尝试将数据从一项活动传递到Kotlin中的接口。此值必须组成一个用于获取请求json的网址。可能吗?我该怎么做?
我是应用程序开发的新手,以前从未使用过接口。
package com.example.adamo3.Request
import com.example.adamo3.Response.ExchangeResponse
import retrofit2.Call
import retrofit2.http.GET
interface RequestApi {
@GET("statistiche/09050905")
fun getAllPosts(): Call<ExchangeResponse>
}
我的目标是通过将“ 09050905”更改为我在一个活动中创建的参数来修改此URL“ statistiche / 09050905”。这样,我将更改URL以从服务器调用。
更新 1)我尝试插入
interface RequestApi {
@GET("statistiche/{id}")
fun getAllPosts(@Query("id") id: String ): Call<ExchangeResponse>
}
但是当我这样做时,当我从一个类(该类)中调用getAllPosts时会收到错误消息
private val retrofit =
Retrofit.Builder().baseUrl("http://x.x.x.x:xxxx/")
.addConverterFactory(GsonConverterFactory.create())
.build()
private val postApi=retrofit.create(RequestApi::class.java)
private val response = postApi.getAllPosts()// i receive error here
2)为了获取所需的值,在其他类中,我使用
// receiving class
textView.text = intent.getStringExtra("Username")
// sending class
val intent = Intent(this@MainActivity,Home::class.java)
intent.putExtra("Username" ,"ID " + editText.text.toString())
startActivity(intent)
我需要在建议的接口代码中定义此部分的地方吗?我需要到达接口的editText内部的值
3) 我需要在哪里定义意图的字符串?如果我在界面中执行此操作,则“在界面中不允许属性初始化程序”
interface RequestApi {
@GET("statistiche/{id}")
fun getAllPosts(@Query("id") id: String ): Call<ExchangeResponse>
String id = intent.getStringExtra("Username")//these two ways are errors
var id = intent.getStringExtra("Username")//same error
}
我想在界面内接收值
4)如果我在此处添加ID,则该ID仍会显示为红色
private val response = postApi.getAllPosts(id)//id is red
答案 0 :(得分:1)
尝试一下:
interface RequestApi {
@GET("statistiche/{id}")
fun getAllPosts(@Query("id") id:String): Call<ExchangeResponse>
}
用法:
// receiving class
String id = intent.getStringExtra("Username")
private val retrofit =
Retrofit.Builder().baseUrl("http://x.x.x.x:xxxx/")
.addConverterFactory(GsonConverterFactory.create())
.build()
private val postApi=retrofit.create(RequestApi::class.java)
private val response = postApi.getAllPosts(id) // pass id here