【发布时间】:2020-02-09 17:39:46
【问题描述】:
我正在使用 Retrofit2 发布 JSON 数组,但是当我发布它时,我得到“200 Ok”响应,并且调用了改造的 onFailed 方法。它说“预期为 BEGIN_ARRAY,但在第 1 行第 2 列路径 $ 处为 STRING”
我是否成功地将 JSON 发送到 WebService?如果它成功了,那么改造为什么会失败? 我的 JSON 数组是这样的:
[{"Date":"2019-01-01T00:00:00","Duration":"25","Type":1,"Number":"53201","id":0,"isDataSent":false,"Name":"test isim","phoneNumber":"5554242422"}]
我已经用 PostMan 测试了 JSON。没关系。
我的改造请求是这样的:
RetrofitClient.getClient()
.postCallModel(list)
.enqueue(object : Callback<List<CallLogModel>>{
override fun onFailure(call: Call<List<CallLogModel>>, t: Throwable) {
Log.d(tag,"Retrofit Failed!")
Log.d(tag,call.toString())
Log.d(tag,t.message)
}
override fun onResponse(call: Call<List<CallLogModel>>, response: Response<List<CallLogModel>>
) {
Log.d(tag,"Retrofit Succeeded!")
Log.d(tag,response.message())
}
})
有专家可以帮我解决这个问题吗?
我的模型课:
@Entity(tableName = "supportCallLog")
data class CallLogModel(
@SerializedName("Name")
val userName: String,
@SerializedName("phoneNumber")
val userPhone: String,
@SerializedName("Number")
val customerPhone: String,
@SerializedName("Time")
val callDuration: String,
@SerializedName("Type")
val callType: Int,
@SerializedName("Date")
val callDate: String,
var isDataSent : Boolean
){
@PrimaryKey(autoGenerate = true)
var id : Int = 0
}
我的改造界面:
interface RetrofitService {
@POST("api")
fun postCallModel(@Body callLogModel: List<CallLogModel>) : Call<List<CallLogModel>>
}
【问题讨论】:
-
将 OkHttp 日志拦截器添加到您的 Retrofit 设置中,然后查看 Web 服务返回的内容。它似乎不是您期望的 JSON。
-
请发布您的 CallLogModel 课程
-
@CommonsWare 是的,我已经添加了日志拦截器和返回“200 ok”的 Web 服务,这意味着“成功”。但是改造的 onFailed 方法被调用了。
-
同时从服务器发布响应数组。实际问题在那里
-
@Swayangjit 我分享了我的模型课。
标签: android web-services kotlin retrofit