改造POST请求永远不会回到OnResponse

时间:2019-01-29 16:12:04

标签: android api kotlin retrofit

我正在尝试使用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) } }) ,所以我不知道它是否已在我的应用程序中完成。

2 个答案:

答案 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中没有出现。 所以,谢谢大家!