400错误通过使用使用API Net Core的Retrofit Android Studio

fv2wmkja  于 2022-11-16  发布在  Android
关注(0)|答案(1)|浏览(141)

我尝试在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);
        });
    }
  }
}

这是log cat中的结果:
result post
Json warning

xurqigkl

xurqigkl1#

我不认为你需要在发布之前将对象转换为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);

相关问题