我找不到这些代码行中语义错误的位置:
PuntoGpsRecorridoDTO puntoGpsRecorridoDto = new PuntoGpsRecorridoDTO();
puntoGpsRecorridoDto.setDescripcion(puntoGpsRecorrido.getDescripcion());
puntoGpsRecorridoDto.setIdRecorrido(37);
puntoGpsRecorridoDto.setDemoraSeg(2);
puntoGpsRecorridoDto.setPrecisionMts(10);
puntoGpsRecorridoDto.setEstado(puntoGpsRecorrido.getEstado());
puntoGpsRecorridoDto.setFechaHora(puntoGpsRecorrido.getFechaHora());
puntoGpsRecorridoDto.setIdDispositivo("943953977-OFICINA");
puntoGpsRecorridoDto.setLatitud(puntoGpsRecorrido.getLatitud());
puntoGpsRecorridoDto.setLongitud(puntoGpsRecorrido.getLongitud());
puntoGpsRecorridoDto.setPrecisionMts(puntoGpsRecorrido.getPrecisionMts());
Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new JsonDateDeserializer()).create();
Retrofit retrofit = new Retrofit.Builder().baseUrl(Util.URL_WS).addConverterFactory(GsonConverterFactory.create(gson)).build();
LocationService locationService = retrofit.create(LocationService.class);
Call<EstadoDTO> callEstadoDto = locationService.enviarPuntoGpsRecorrido(puntoGpsRecorridoDto);
Response<EstadoDTO> exec = callEstadoDto.execute();
estadoDto = exec.body(); // <<<------ body() return NULL
改造客户端的位置服务接口(interface):
public interface LocationService
{
@POST("recorrido/sending")
Call<EstadoDTO> enviarPuntoGpsRecorrido(@Body PuntoGpsRecorridoDTO puntoGpsRecorridoDto);
}
连接到服务? ---> 是的,
它以另一种方式起作用? --> 是的,用 SoapUI 测试,
服务器? ---> Apache tomcat + Mysql + Hibernate
PuntoGpsRecorridoDTO 类:
public class PuntoGpsRecorridoDTO
{
private Integer idRecorrido;
private String idDispositivo;
private Double latitud;
private Double longitud;
private Boolean estado;
private String descripcion;
private Integer precisionMts;
private Integer demoraSeg;
private Date fechaHora;
public PuntoGpsRecorridoDTO()
{
}
}
PuntoGpsRecorrido 类:
@DatabaseTable(tableName = "PuntoGpsRecorrido")
public class PuntoGpsRecorrido
{
@DatabaseField(generatedId = true)
private Integer idRecorrido;
@DatabaseField(foreign = true, canBeNull = false)
private Dispositivo dispositivo;
@DatabaseField
private Double latitud;
@DatabaseField
private Double longitud;
@DatabaseField
private Boolean estado;
@DatabaseField
private String descripcion;
@DatabaseField
private Integer precisionMts;
@DatabaseField
private Integer demoraSeg;
@DatabaseField
private Date fechaHora;
public PuntoGpsRecorrido()
{}
}
EstadoDTO 类:
public class EstadoDTO
{
public static final String EXITO="001";
public static final String ERROR="000";
private String code;
private String msg;
private String extra;
public EstadoDTO()
{}
}
错误:
用 SoapUI 测试,很顺利:
What am I doing wrong ? Please let me know if you for more information need. Thanks in advance.
最佳答案
使用下面的代码,它将处理来自服务器的各种故障,您可能需要升级到最新版本的 Retrofit。
调用 callEstadoDto = locationService.enviarPuntoGpsRecorrido(puntoGpsRecorridoDto);
callEstadoDto.enqueue(new Callback<EstadoDTO>() {
@Override
public void onResponse(Response<EstadoDTO> response, Retrofit retrofit) {
hideLoader();
if(response.isSuccess()){
//do your thing
}else{
String error=response.errorBody().string();
}
}
@Override
public void onFailure(Throwable t) {
Log.e("error " , ""+t.toString());
}
});
关于android - 在 Android 的 body() 方法中改造返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39218632/