我正在尝试使用POST
发出一个Retrofit
请求,该请求实际上工作正常,但是它从不执行OnResponse
函数。
事实是,使用GET
可以正常工作,但不能使用POST
请求。
我尝试将请求状态代码从201
更改为200
,但是没有用。
我试着调用另一个函数,尝试关联body?.it值,而不是Toast
中的OnResponse
,但是即使在调试模式下,它也不起作用...所以我认为{{1 }}从未执行过。
OnResponse
也从未执行过。
初始化器:
OnFailure
OrderService.kt
private val retrofit = Retrofit.Builder()
.baseUrl("http://myserverurl.com/api/")
.addConverterFactory(GsonConverterFactory.create())
.build()
fun orderService () = retrofit.create(OrderService ::class.java)
致电:
interface OrderService {
@POST("pedido")
fun insert(@Body order: OrderEntity, @Header("mykey") myKey:String) : Call<OrderEntity>
}
因此,请记住该请求有效,它将数据保存在API服务器上,只是没有返回到 val call = RetrofitInitializer().orderService().insert(order, mMyKey)
call.enqueue(object : Callback<OrderEntity> {
override fun onResponse(call: Call<OrderEntity>?,
response: Response<OrderEntity>?) {
response?.body()?.let {
Toast.makeText(mContext, "It works!", Toast.LENGTH_LONG).show()
}
}
override fun onFailure(call: Call<OrderEntity>?, t: Throwable?) {
Log.e("onFailure error", t?.message)
}
})
,所以我不知道它是否已在我的应用程序中完成。
答案 0 :(得分:0)
您是否为HTTP / 2连接设置了okHttp客户端?
private val retrofit = Retrofit.Builder()
.baseUrl("http://myserverurl.com/api/")
.addConverterFactory(GsonConverterFactory.create())
.client(okhttpClient)
.build()
private val okhttpClient = new OkHttpClient();
答案 1 :(得分:0)
对不起。我发现了问题。它返回到OnResponse,但代码为500。 我的API中的一个字段存在问题,但PostMan中没有出现。 所以,谢谢大家!