当前位置: 首页 > 知识库问答 >
问题:

改装2个POST JSON对象,响应给出错误代码400,message=nul

唐兴思
2023-03-14

我试图张贴用户详细信息,使用POJO类在数据库中创建新用户。API接受原始JSON作为发布请求。我收到的响应是响应{协议=超文本传输协议/1.1,代码=400,消息=,url=我的api url}

我正在使用POJO类CreateUser为我的用户创建详细信息,并将其传递给改型API接口

我的API定义如下,CreateUserResponse是用于存储改装响应的响应POJO类

public interface APIDefinitions {
@POST("auth/register")
Call<CreateUserResponse> RegisterUser(@Body CreateUser createUser);

}

我的改装客户端设置类:

public class RetrofitClient {

private final static String base_url = "https://url/";
private static RetrofitClient retrofitClient;
private static Retrofit retrofit;

HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
private RetrofitClient(){

    retrofit = new Retrofit.Builder()
            .baseUrl(base_url)
            .addConverterFactory(GsonConverterFactory.create())
            .addConverterFactory(ScalarsConverterFactory.create())
            .client(client)
            .build();
}


public static synchronized RetrofitClient getInstance(){
    if (retrofitClient == null)
        retrofitClient = new RetrofitClient();
    return retrofitClient;
}

public APIDefinitions getApi() {
    return retrofit.create(APIDefinitions.class);
}

}

下面是我如何在我的用户活动中进行新的呼叫和发送POST请求

//                The below createUser object initialization is for testing purpose and thus hardcoded
            CreateUser user = new CreateUser(
                    "harshpalit",
                    "harshpalit@gmail.com",
                    "harshpalit",
                    "harshpalit",
                    "Harsh",
                    "Palit",
                    987845789);

            Call<CreateUserResponse> call = RetrofitClient
                    .getInstance()
                    .getApi()
                    .RegisterUser(user);

            Log.d("Request", call.request().body().contentType().toString());
            Log.d("Request", call.request().toString());
            call.enqueue(new Callback<CreateUserResponse>() {
                @Override
                public void onResponse(Call<CreateUserResponse> call, Response<CreateUserResponse> response) {
                    Log.d("Response from Server", response.raw().toString());
                    if (response.code()==400) {
                        Log.d("Error 400",response.errorBody().toString());
                    } else {
                        Toast.makeText(getApplicationContext(), response.message(), Toast.LENGTH_SHORT).show();
                    }

                    CreateUserResponse response1 = response.body();
                   Log.d("Response Message", response1.getMessage() + "Failed");
                }

                @Override
                public void onFailure(Call<CreateUserResponse> call, Throwable t) {
                    Log.d("Failed Log",t.getMessage());
                    Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_SHORT).show();
                }
            });


        }
    });

我正在发送的请求呼叫:

请求{method=POST,url=https://managed-dev-test.herokuapp.com/api/auth/register,tags={class2.Invocation=com.craftec.managed.API.APIDefinitions.RegisterUser()[com.craftec.managed.POJO。CreateUser@b2319f8]}}

回应:

响应{协议=http/1.1,代码=400,消息=,url=https://managed-dev-test.herokuapp.com/api/auth/register}

看来一切都安排妥当了。请帮忙

共有1个答案

费秦迟
2023-03-14

首先,使用PostMan或任何其他相关应用程序测试API并获得响应。之后为它创建一个适当的POJO类。如果一切顺利,它会解决你的问题。

验证CreateUserResponse POJO类

public class CreateUserResponse {

@SerializedName("success")
@Expose
private Boolean success;

@SerializedName("message")
@Expose
private String message;

public Boolean getSuccess() {
return success;
}

public void setSuccess(Boolean success) {
this.success = success;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}
}

如果这没有解决它,那么您必须检查CreateUser类。验证是否为每个字段传递了正确的值。

 类似资料:
  • 因此,当我对服务器进行POST API调用时,我得到一个带有JSON响应的400 Bad Request错误。 我管它叫 然而,问题是,一旦我得到响应,就调用onFailure(),这样就调用了//bb。在这里,我无法访问JSON响应。当我记录api请求和响应时,它根本不显示JSON响应。而可抛出的t是IOException。然而,奇怪的是,当我对Postman进行相同的调用时,它确实返回了预期的

  • 我正在RestTemplate中使用exchange for GET方法。但是在exchange方法中传递requestEntity时,我得到了400个错误的请求。下面是我正在使用的代码。 生成URL: 我尝试从postman访问producer URL,其标题为Content-Type:Application/JSON,正文为{“firstName”:“a”,“lastName”:“b”,“da

  • 我试图在中发送格式的请求。 我尝试了很多来自internet和StackOverflow的代码,但都不起作用。

  • 来自API的Im有两个不同的响应。然后我判断对象,但是我如何将消息的内容返回到字符串呢?下面的示例返回Exception: Json响应: Json响应: 模型:

  • 我在Eclipse Photon上用Java8编写了一个简单的webService,使用RestTemplate发布(使用postForObject)一个对象(称为patentListWrapper),该对象包装了一个对象列表(称为PatentDetails)。我从Java客户机(称为MainWsClient)发布,然后在服务器端的patentDetails中设置一个值,并在客户机中读取paten