Я хочу опубликовать List<Airport>
и сохранить его в базе данных веб-сервера с помощью Retrofit. Например, я написал простой API, который берет список из Retrofit и отвечает тем же списком в качестве входных данных, но он дает значение NULL, как видно в журнале
*, просто для целей тестирования, чтобы проверить, совпадают ли входные и выходные данные.
Android Код:
val call: Call<ResponseBody> = ApiClient.getClient.pushListAirport(
localListDiff, "Bearer "+Util.token)
call.enqueue(object : Callback<ResponseBody> {
override fun onResponse(call: Call<ResponseBody>?, response: Response<ResponseBody>?) {
Log.d("sfsdfsdf", Gson().toJson(response?.body()))
Toast.makeText(applicationContext, response?.body()?.name,Toast.LENGTH_LONG).show()
}
override fun onFailure(call: Call<ResponseBody>?, t: Throwable?) {
Toast.makeText(applicationContext, t?.message,Toast.LENGTH_LONG).show()
}
})
Пример localListDiff:
[Airport(name=Name, created_at=2020-03-29 07:22:15, updated_at=2020-03-29 07:22:15, is_synced=0, id=9), Airport(name=df, created_at=2020-03-28 20:44:33, updated_at=2020-03-28 20:44:33, is_synced=1, id=10), Airport(name=Name, created_at=2020-03-29 07:39:40, updated_at=2020-03-29 07:39:40, is_synced=0, id=11)]
Модифицированный интерфейс:
@FormUrlEncoded
@POST("airports")
fun pushListAirport(
@Field("list[]") list : List<Airport>,
@Header("Authorization") authHeader:String
): Call<ResponseBody>
Журнал:
2020-03-29 21:36:08.688 21729-21729/zohaiblab.devtros.kotlinpractice D/sfsdfsdf: null
Laravel API:
public function store($req) {
return $req->input("list");
}
public function store(Request $request)
{
try {
$data = $this->service->store($request);
return response()->json($data, 201);
} catch (Exception $e) {
return response()->json(['message' => $e->getMessage()], 500);
}
}