Android 如何通过改造Kotlin发送带有表单URL编码的对象数组?
我想将经过编码的表单URL发送到服务器,但参数需要对象数组 我曾尝试使用改装后的FieldMap并传递数据,但当我尝试与邮递员联系时,得到了不同的响应 参数需要通过Android 如何通过改造Kotlin发送带有表单URL编码的对象数组?,android,kotlin,retrofit2,Android,Kotlin,Retrofit2,我想将经过编码的表单URL发送到服务器,但参数需要对象数组 我曾尝试使用改装后的FieldMap并传递数据,但当我尝试与邮递员联系时,得到了不同的响应 参数需要通过 { "allowedStatus": "submit", "filters": [ { "userId": "2" } ], "page": 1, "pageSize": 2 } 改造 @FormUrlEncoded @POST("ticket/status-list")
{
"allowedStatus": "submit",
"filters": [
{
"userId": "2"
}
],
"page": 1,
"pageSize": 2
}
改造
@FormUrlEncoded
@POST("ticket/status-list")
fun getTicketStatusList(
@Field("allowedStatus") allowedStatus: String,
@FieldMap filters: HashMap<String, String>,
@Field("page") page: Int,
@Field("pageSize") pageSize: Int
): Observable<Response<TicketListModel>>
@FormUrlEncoded
@POST(“票证/状态列表”)
有趣的getTicketStatusList(
@字段(“allowedStatus”)allowedStatus:字符串,
@FieldMap筛选器:HashMap,
@字段(“页面”)页面:Int,
@字段(“页面大小”)页面大小:Int
):可见
哈希映射
val filters = HashMap<String, String>()
filters["userId"] = "1"
Log.e("fieldMap", filters.toString())
getTicketStatusList("monitoring", filters, 1, 5)
val filters=HashMap()
筛选器[“用户ID”]=“1”
Log.e(“fieldMap”,filters.toString())
getTicketStatusList(“监控”,过滤器,1,5)
结果我得到{},响应为200请像这样尝试:
val filters = HashMap<String, RequestBody>()
filters.put("userId", toRequestBody("2"))
getTicketStatusList("monitoring", filters, 1, 5)
尝试以下方法:
data class Filters(var userId: String = "")
data class MyRequest(
var allowedStatus: String = "",
var filters: ArrayList<Filters>? = null,
var page: Int = 0,
var pageSize: Int = 0
)
@POST("ticket/status-list")
fun getTicketStatusList(@Body request: MyRequest): Observable<Response<TicketListModel>>
数据类筛选器(var userId:String=”“)
数据类MyRequest(
var allowedStatus:String=“”,
变量筛选器:ArrayList?=null,
变量页:Int=0,
变量pageSize:Int=0
)
@POST(“票证/状态列表”)
fun getTicketStatusList(@Body request:MyRequest):可观察
请同时尝试“@FieldMap(encoded=true)filters:HashMap”,仍然是相同的响应首先尝试将“Observable”更改为“Observable”,如果它不起作用,那么尝试使用map而不是像“@FieldMap(encoded=true)filters:map”这样的HashMap,过滤器数组中会有不同的对象还是相同的对象?
fun toRequestBody(value: String): RequestBody {
return RequestBody.create(MediaType.parse("text/plain"), value)
}
data class Filters(var userId: String = "")
data class MyRequest(
var allowedStatus: String = "",
var filters: ArrayList<Filters>? = null,
var page: Int = 0,
var pageSize: Int = 0
)
@POST("ticket/status-list")
fun getTicketStatusList(@Body request: MyRequest): Observable<Response<TicketListModel>>