我正在尝试做一篇关于改进的文章,以检查服务器中是否存在一些数据。我的问题是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) {
}
});