我试图张贴用户详细信息,使用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}
看来一切都安排妥当了。请帮忙
首先,使用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