我正在尝试从我的服务器获取一个List,就像我在其他类中完成的一样,并且它有效。 但现在我在这个回调中遇到错误。总是去失败 我用邮递员测试,服务器很好地返回列表。
RetrofitOwn retro = new RetrofitOwn();
Retrofit retrofit = retro.getObjectRetrofit();
GitHubClient etakemonsusuario = retrofit.create(GitHubClient.class);
Call<List<Captura>> call = etakemonsusuario.getCapturasUsuario(idloged);
call.enqueue(new Callback<List<Captura>>() {
@Override
public void onResponse(Call<List<Captura>> call, Response<List<Captura>> response) {
if (response.isSuccessful()){
listView = (ListView) findViewById(R.id.listEtakemons);
listarecibida = (List<Captura>) response.body();
listacapturas = new ArrayList<String>();
for (int i = 0; i < listarecibida.size(); i++) {
Captura captura = listarecibida.get(i);
listacapturas.add(captura.getNombreetakemon());
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>
(EtakemonsUsuario.this, android.R.layout.simple_list_item_1, listacapturas);
listView.setAdapter(arrayAdapter);
}
else{
Toast.makeText(EtakemonsUsuario.this, "Peticion erronea!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<List<Captura>> call, Throwable t) {
Toast.makeText(EtakemonsUsuario.this, "No hay conexión!", Toast.LENGTH_SHORT).show();
Log.d(tag, "ERROR al conectar!");
}
});
接口中的API调用声明如下:
@GET ("usuario/{id}/get_capturas")
Call<List<Captura>> getCapturasUsuario(@Path("id") int id);
服务器控制器的代码也是:
@GET
@Path("/{id}/get_capturas")
@Produces(MediaType.APPLICATION_JSON)
public Response getCapturasUsuario(@PathParam("id") int idUsuario){
Usuario usuario = new Usuario();
if (idUsuario != 0){
Usuario usuario2 = new Usuario();
List<Captura> capturaList = usuario2.getCapturasUsuario(idUsuario);
// for (int i = 0; i < capturaList.size(); i++){
// System.out.println(capturaList.get(i).getNombreetakemon());
// }
GenericEntity<List<Captura>> entity = new GenericEntity<List<Captura>>(capturaList) {};
return Response.status(201).entity(entity).build();
}
else
{
String noResult = "No tiene capturas.";
return Response.status(404).entity(noResult).build();
}
}
控制器调用的函数是:
public List<Captura> getCapturasUsuario(int id) {
List<Captura> listaCapturaUsuario = new ArrayList<Captura>();
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM Captura WHERE captura.idusuariosss = " + id);
while (rs.next()) {
Captura capturaUsuario = new Captura();
capturaUsuario.setId(rs.getInt("id"));
capturaUsuario.setIdusuariosss(rs.getInt("idusuariosss"));
capturaUsuario.setIdetakemon(rs.getInt("idetakemon"));
capturaUsuario.setNivel(rs.getInt("nivel"));
capturaUsuario.setExperiencia(rs.getInt("experiencia"));
capturaUsuario.setVida(rs.getInt("vida"));
capturaUsuario.setAtaque(rs.getInt("ataque"));
capturaUsuario.setDefensa(rs.getInt("defensa"));
capturaUsuario.setEstado(rs.getInt("estado"));
capturaUsuario.setFecha(rs.getDate("fecha"));
capturaUsuario.setNombreetakemon(rs.getString("nombreetakemon"));
capturaUsuario.setHabilidadetakemon(rs.getString("habilidadetakemon"));
capturaUsuario.setTipoetakemon(rs.getInt("tipoetakemon"));
capturaUsuario.setImagen(rs.getString("imagen"));
listaCapturaUsuario.add(capturaUsuario);
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("getCapturasUsuario: "+e.getMessage());
}
return listaCapturaUsuario;
}
任何人都知道问题出在哪里?
我认为来自服务器的响应是成功的,但android studio说它不成功
非常感谢!
我刚发现这个error
答案 0 :(得分:0)
您需要定义日期格式来解析日期。在您的改造实例中使用gson构建器。试试这个:
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
}
希望有所帮助