2017-01-02 70 views
1

我试图做一个职位与翻新检查是否有一些数据存在于服务器中。我的问题是,无论如何都要通过onResponse或OnFailure。代码从未传入这两种方法。我在日志中没有出现任何错误。如果我调试,代码到此为止:call.enqueue(新的回调(),并在下一步走法外Post方法与改造永不触发在OnResponse或在OnFailure

一些帮助将欣赏

代码:

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" : "[email protected]" 
} 

编辑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); 

型号:

现在0
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; 
    } 
} 
+0

你说你要发送JSON,但你的Retorift接口描述您要发送的形式 – Divers

+0

您的Web服务调用后,什么类型的数据要退从服务器?这些数据与'用户'模型有关吗? –

+0

我怎样才能发送与我的界面Json?服务器不返回任何内容。 –

回答

2

您将需要一个单独的模型类来处理Web服务的响应:

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

,并把这个类来代替User在改造Web服务调用。 1.您smsPincodeCheckApiInterface接口的方法:

在更换UserResponse。 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) { 

      } 
     }); 
+0

您的意思是call.enqueue(new Callback ()而不是call.enqueue(new Callback ()?? –

+0

是的,试着改变它,你还需要在ApiInterface接口的'smsPincodeCheck'方法中用'Response'来改变'User'。 –

+0

这不起作用。随着您的更改,我有一个不兼容的类型:致电 smsPincodeCheck(@Body用户用户); 致电 call = apiService.smsPincodeCheck(user); –