android - 在 Android 的 body() 方法中改造返回 null

标签 android tomcat android-studio retrofit retrofit2

我找不到这些代码行中语义错误的位置:

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()
    {}

}

错误:

enter image description here

用 SoapUI 测试,很顺利:

enter image description here

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/

相关文章:

android - 将 handler.post(new Runnable());在 Android 中创建新线程?

android - 从更改的 framework.jar 构建 Android AOSP system.img

apache - Liferay 的 SOLR 插件有什么用?

Tomcat 警告 : "Setting property ' showServerInfo' to 'false' did not find a matching property"

java - 链接到 webservice 外部的属性文件

android-studio - 每 5 秒刷新一次 WebView

android - Android Studio Gradle主页路径

Android改造解析List中嵌套的json响应

flutter - 在 android studio 上从 "Pub get"获取错误

android - Kotlin Coroutines 的现有 3 函数回调