【问题标题】:Error 400 by using Retrofit Android Studio using API Net Core使用 API Net Core 使用 Retrofit Android Studio 时出现 400 错误
【发布时间】:2022-11-12 12:11:04
【问题描述】:

我正在尝试使用 Android Studio Java 中的 Retrofit 进行 POST 请求,但响应显示“错误 400”,我也创建了 API,所以我不知道出了什么问题,API 是在 NET 核心中创建的,这是我的应用程序代码:

  private void senddata(String nombre,String edad){
    OkHttpClient.Builder clientBuilder=new OkHttpClient.Builder();
    HttpLoggingInterceptor loggingInterceptor=new HttpLoggingInterceptor();
    loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    clientBuilder.addInterceptor(loggingInterceptor);

    Retrofit retrofit=new Retrofit.Builder()
            .baseUrl("http://10.24.1.29/sicegipruebas4/api/")
            .client(clientBuilder.build())
            .addConverterFactory(GsonConverterFactory.create())
            .addConverterFactory(ScalarsConverterFactory.create())
            .build();

    KidInterface inter=retrofit.create(KidInterface.class);
    try{
        JSONObject obj=new JSONObject();
        obj.put("id",UUID.randomUUID().toString());
        obj.put("name", nombre);
        obj.put("edad",edad);
        Call<Kid> call=inter.createPost(obj.toString());
        call.enqueue(this);
    }catch (JSONException e){
        e.printStackTrace();
    }
}

我的界面:

public interface KidInterface {
  @Headers({"Content-Type:application/json; charset=utf-8"})
  @POST("kids")
  Call<Kid> createPost(@Body String kid); 
 }

我的模型:

public class Kid {

@SerializedName("id")
private String id;
@SerializedName("name")
private String name;
@SerializedName("edad")
private String edad;

public Kid(String id,String name,String edad){
  this.id=id;
  this.name=name;
  this.edad=edad;
}

和API代码:

 public class Kids
{
    public String id { get; set; }
    public String name { get; set; }
    public String edad { get; set; }

}

上下文 API:

public class AppNNADBContext:DbContext
{
    public AppNNADBContext(DbContextOptions options) : base(options) { }

    public DbSet<Kids> Kids { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Kids>(entity =>
        {
            entity.HasKey(e => e.id);
        });
    }
  }
}

这是日志 cat 中的结果:

result post

Json warning

【问题讨论】:

    标签: java android-studio asp.net-core retrofit


    【解决方案1】:

    我认为您不需要在发布之前将对象转换为 json。因为您已经有了 Kids 模型。并添加了 GsonConverterFactory 它将自动处理对象的序列化和反序列化。你可以在@Body 中使用这个模型。

    public interface KidInterface {
      @Headers({"Content-Type:application/json; charset=utf-8"})
      @POST("kids")
      Call<Kid> createPost(@Body Kid kid); 
    }
    

    发布

    Kid kid=new Kid();
    kid.id=UUID.randomUUID().toString();
    kid.name=nombre;
    kid.edad=edad;
    
    Call<Kid> call=inter.createPost(kid);
    

    【讨论】:

      猜你喜欢
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-21
      • 1970-01-01
      • 2015-10-07
      • 2020-10-04
      • 1970-01-01
      相关资源
      最近更新 更多