Android 改造在 post 请求中更改日期格式 "yyyy-MM-dd hh:mm:ss"
Android retrofit change the date format "yyyy-MM-dd hh:mm:ss" in a post request
我在 android 和改造方面遇到问题,希望您能帮助我或给我提供解决方法的线索。
我用 json 向 php REST api 发送了一个 post 请求。日期格式为“yyyy-MM-dd hh:mm:ss”,因为数据将存储在 mysql 数据库中。
InformeEnvio 对象被转换为 json 并且格式使用 gson 设置,但在 php 服务器中,日期以这种格式到达:“2021 年 10 月 22 日 6:55:55 下午”,尽管 json android 控制台中显示的格式是这样的:“2021-10-22 18:55:55”。另外,我向 postman 发出请求,json 字符串和日期以正确的格式到达。
这是改装post请求代码和pojo代码。
谢谢。
@Headers({
"Accept: application/json",
"Content-Type: application/json"
})
Call<PostResponse> saveInformeEnvio(@Body InformeEnvio item);
public class InformeEnvio {
private Visita visita;
private InformeCompra informeCompra;
private List<InformeCompraDetalle> informeCompraDetalles;
private List<ImagenDetalle> imagenDetalles;
private List<ProductoExhibido> productosEx;
public Visita getVisita() {
return visita;
}
public void setVisita(Visita visita) {
this.visita = visita;
}
public InformeCompra getInformeCompra() {
return informeCompra;
}
public void setInformeCompra(InformeCompra informeCompra) {
this.informeCompra = informeCompra;
}
public List<InformeCompraDetalle> getInformeCompraDetalles() {
return informeCompraDetalles;
}
public void setInformeCompraDetalles(List<InformeCompraDetalle> informeCompraDetalles) {
this.informeCompraDetalles = informeCompraDetalles;
}
public List<ImagenDetalle> getImagenDetalles() {
return imagenDetalles;
}
public void setImagenDetalles(List<ImagenDetalle> imagenDetalles) {
this.imagenDetalles = imagenDetalles;
}
public List<ProductoExhibido> getProductosEx() {
return productosEx;
}
public void setProductosEx(List<ProductoExhibido> productosEx) {
this.productosEx = productosEx;
}
public String toJson(InformeEnvio informe) {
// this.inf_visitasIdlocal=informe.getVisitasId();
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd hh:mm:ss").create();
String informejson=gson.toJson(informe.informeCompra);
String JSON = gson.toJson(informe);
return JSON;
}
}
我认为您必须在创建 RestAdapter 时配置它。你可以给一个 GsonConverter
来改造你的日期格式。像这样的代码应该可以工作:
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd hh:mm:ss")
.create();
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(API_BASE_URL)
.setConverter(new GsonConverter.create(gson))
.build();
根据您构建客户端的方式,您必须使用不同的方法:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
我在 android 和改造方面遇到问题,希望您能帮助我或给我提供解决方法的线索。 我用 json 向 php REST api 发送了一个 post 请求。日期格式为“yyyy-MM-dd hh:mm:ss”,因为数据将存储在 mysql 数据库中。 InformeEnvio 对象被转换为 json 并且格式使用 gson 设置,但在 php 服务器中,日期以这种格式到达:“2021 年 10 月 22 日 6:55:55 下午”,尽管 json android 控制台中显示的格式是这样的:“2021-10-22 18:55:55”。另外,我向 postman 发出请求,json 字符串和日期以正确的格式到达。 这是改装post请求代码和pojo代码。
谢谢。
@Headers({
"Accept: application/json",
"Content-Type: application/json"
})
Call<PostResponse> saveInformeEnvio(@Body InformeEnvio item);
public class InformeEnvio {
private Visita visita;
private InformeCompra informeCompra;
private List<InformeCompraDetalle> informeCompraDetalles;
private List<ImagenDetalle> imagenDetalles;
private List<ProductoExhibido> productosEx;
public Visita getVisita() {
return visita;
}
public void setVisita(Visita visita) {
this.visita = visita;
}
public InformeCompra getInformeCompra() {
return informeCompra;
}
public void setInformeCompra(InformeCompra informeCompra) {
this.informeCompra = informeCompra;
}
public List<InformeCompraDetalle> getInformeCompraDetalles() {
return informeCompraDetalles;
}
public void setInformeCompraDetalles(List<InformeCompraDetalle> informeCompraDetalles) {
this.informeCompraDetalles = informeCompraDetalles;
}
public List<ImagenDetalle> getImagenDetalles() {
return imagenDetalles;
}
public void setImagenDetalles(List<ImagenDetalle> imagenDetalles) {
this.imagenDetalles = imagenDetalles;
}
public List<ProductoExhibido> getProductosEx() {
return productosEx;
}
public void setProductosEx(List<ProductoExhibido> productosEx) {
this.productosEx = productosEx;
}
public String toJson(InformeEnvio informe) {
// this.inf_visitasIdlocal=informe.getVisitasId();
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd hh:mm:ss").create();
String informejson=gson.toJson(informe.informeCompra);
String JSON = gson.toJson(informe);
return JSON;
}
}
我认为您必须在创建 RestAdapter 时配置它。你可以给一个 GsonConverter
来改造你的日期格式。像这样的代码应该可以工作:
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd hh:mm:ss")
.create();
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(API_BASE_URL)
.setConverter(new GsonConverter.create(gson))
.build();
根据您构建客户端的方式,您必须使用不同的方法:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();