带有改装的Post方法在OnResponse或OnFailure中从不触发



我正在尝试做一篇关于改进的文章,以检查服务器中是否存在一些数据。我的问题是nver通过onResponse或OnFailure。代码永远不会在这两个方法中传递。日志中没有任何错误。如果我进行调试,代码将停止在这里:call.enqueue(newCallback),然后在下一步中转到方法之外。

一些帮助将感谢

代码:

ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
Call<User> call = apiService.smsPincodeCheck(getPhoneNuber, email);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if(response.isSuccess()){
Toast.makeText(RegisterThreeActivity.this, "200", Toast.LENGTH_SHORT).show();
}
if(response.code() == 401){
Toast.makeText(RegisterThreeActivity.this, "401", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
}
});

接口:

@FormUrlEncoded
@POST("api/check")
Call<User> smsPincodeCheck(@Field("email") String email,  @Field("phoneNumber") String phoneNumber);

用户型号:

public class User implements Serializable {
private final static String TAG = "User";
@SerializedName("user")
@Expose
private Long id;
private Long commerceId;
private String email;
private String name;
private String lastname;
private String dni;
private String companyCharge;
.
.
. Getters and setters

JSON:

这是我试图发送到服务器的json:

{
"phoneNumber" : "444444444", 
"email" : "example@example.com"
}

编辑1:

Call<ResponseSMS> call = apiService.smsPincodeCheck(getPhoneNuber, email);
call.enqueue(new Callback<ResponseSMS>() {
@Override
public void onResponse(Call<ResponseSMS> call, Response<ResponseSMS> response) {
if(response.isSuccess()){
Toast.makeText(RegisterThreeActivity.this, "200", Toast.LENGTH_SHORT).show();
}
if(response.code() == 401){
Toast.makeText(RegisterThreeActivity.this, "401", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<ResponseSMS> call, Throwable t) {
Toast.makeText(RegisterThreeActivity.this, "Failure", Toast.LENGTH_SHORT).show();
}
});
}

接口:

Call<ResponseSMS> smsPincodeCheck(@Field("email") String email, @Field("phoneNumber") String phoneNumber);

型号:

public class ResponseSMS {
public String response;
public int status;
public String getResponse() {
return response;
}
public void setResponse(String response) {
this.response = response;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}

现在您需要创建一个单独的模型类来处理web服务的响应:

public class Response { public String response; public int status; }

并在您的改进web服务调用中用这个类代替User

将中的User替换为Response:1.您的ApiInterface接口的smsPincodeCheck方法。2.Call<Response> call = apiService.smsPincodeCheck(getPhoneNuber, email);3.

call.enqueue(new Callback<Response>() {
@Override
public void onResponse(Call<Response> call, Response<Response> response) {
if(response.isSuccess()){
Toast.makeText(RegisterThreeActivity.this, "200", Toast.LENGTH_SHORT).show();
}
if(response.code() == 401){
Toast.makeText(RegisterThreeActivity.this, "401", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<Response> call, Throwable t) {
}
});

最新更新