如何在 JSON @Body Retrofit Android 中包含 "param" 名称
How to include "param" name in JSON @Body Retrofit Android
我需要从 Android 调用服务。
我用 Postman 测试了该服务并且它可以工作,但是该服务接收到一个名为“parametros”的参数,它是一个 JSON 格式的 ArrayList,它看起来像这样
正确的格式是
{
"parametros": [
{
"Nombre": "@@IdCliente",
"Valor": "1"
}
]
}
它包含参数名称“parametros”。
在邮递员中它工作正常。
但是在 Android 我有:
interface APIService {
@POST("/getMovimientos")
fun getMovimientos(@Body parametros: List<APIParameter>): Call<BalanceVO>
}
我的请求是这样的:
D/OkHttp: --> POST https://xxxxxxx/getMovimientos
Content-Type: application/json; charset=UTF-8
Content-Length: 38
D/OkHttp: [{"Nombre":"@@IdCliente","Valor":"1"}]
--> END POST (38-byte body)
参数
[{"Nombre":"@@IdCliente","Valor":"1"}]
应该是
"parametros":[{"Nombre":"@@IdCliente","Valor":"1"}]
如何配置我的应用程序以放置此参数名称?
将您的 body 构建为数据 class 的 object,如下所示
data class APIRequestPayload (
val parametros: List<APIParameter>
)
data class APIParameter (
val Nombre: String,
val Valor: String
)
然后在服务中使用它
fun getMovimientos(@Body parametros: APIRequestPayload): Call<BalanceVO>
要使用它,请将 body 作为对象传递,
service.getSaldo(parametros=APIRequestPayload(parametros=List<APIParameter>)).enqueue()
仍然命名 val Nombre
不是常规的,如果使用 GSON
,您可以使用 @SerializedName("Nombre") val nombre
注释以坚持变量命名约定
像这样创建数据 class 并为其分配列表并将其作为正文传递
data class ParametrosBody(val parametros: List<APIParameter>)
val parametros = ...//your list
val body = ParametrosBody(parametros)
interface APIService {
@POST("/getMovimientos")
fun getSaldo(@Body parametros: ParametrosBody): Call<BalanceVO>
}
我需要从 Android 调用服务。
我用 Postman 测试了该服务并且它可以工作,但是该服务接收到一个名为“parametros”的参数,它是一个 JSON 格式的 ArrayList,它看起来像这样
正确的格式是
{
"parametros": [
{
"Nombre": "@@IdCliente",
"Valor": "1"
}
]
}
它包含参数名称“parametros”。 在邮递员中它工作正常。
但是在 Android 我有:
interface APIService {
@POST("/getMovimientos")
fun getMovimientos(@Body parametros: List<APIParameter>): Call<BalanceVO>
}
我的请求是这样的:
D/OkHttp: --> POST https://xxxxxxx/getMovimientos
Content-Type: application/json; charset=UTF-8
Content-Length: 38
D/OkHttp: [{"Nombre":"@@IdCliente","Valor":"1"}]
--> END POST (38-byte body)
参数
[{"Nombre":"@@IdCliente","Valor":"1"}]
应该是
"parametros":[{"Nombre":"@@IdCliente","Valor":"1"}]
如何配置我的应用程序以放置此参数名称?
将您的 body 构建为数据 class 的 object,如下所示
data class APIRequestPayload (
val parametros: List<APIParameter>
)
data class APIParameter (
val Nombre: String,
val Valor: String
)
然后在服务中使用它
fun getMovimientos(@Body parametros: APIRequestPayload): Call<BalanceVO>
要使用它,请将 body 作为对象传递,
service.getSaldo(parametros=APIRequestPayload(parametros=List<APIParameter>)).enqueue()
仍然命名 val Nombre
不是常规的,如果使用 GSON
@SerializedName("Nombre") val nombre
注释以坚持变量命名约定
像这样创建数据 class 并为其分配列表并将其作为正文传递
data class ParametrosBody(val parametros: List<APIParameter>)
val parametros = ...//your list
val body = ParametrosBody(parametros)
interface APIService {
@POST("/getMovimientos")
fun getSaldo(@Body parametros: ParametrosBody): Call<BalanceVO>
}