处理翻新状态代码没有Pojo类

处理翻新状态代码没有Pojo类

问题描述:

我从我的服务器得到了以下响应:状态代码201 Created。 没有实际的响应(返回的对象等),所以不需要创建POJO类。处理翻新状态代码没有Pojo类

所以,我不知道我应该如何处理这个状态码,而不需要创建一个POJO类。是否有任何选项可以在不使用POJO类的情况下编写代码?

+1

入住这 http://stackoverflow.com/questions/31808083/how -to-get-retrofit-success-responce-status-codes –

+0

使用'拨打'。 –

+0

看看这个线程:http://stackoverflow.com/questions/21398598/how-to-post-raw-whole-json-in-the-body-of-a-retrofit-request/36821182#36821182 – TommySM

改进API有Response类可以封装您的响应。

只要你不想响应数据打扰你可以实现你的服务为:

interface CustomService { 
    @GET("whatever") 
    Call<Response<Void>> getAll(); 

    // Or using RxJava: 
    @GET("whatever") 
    Single<Response<Void>> getRxAll(); 
} 

然后实现你的回调:

private Callback<Response<Void>> responseHandler = new Callback<Response<Void>>() { 
    @Override 
    public void onResponse(Call<Response<Void>> call, Response<Response<Void>> response) { 
    final int code = response.code(); 
    // TODO: Do whatever you want with the response code. 
    } 

    @Override 
    public void onFailure(Call<Response<Void>> call, Throwable t) { 
     // TODO: Handle failure. 
    } 
} 

或反应消费者:

private Consumer<Response<Void>> responseRxHandler = new Consumer<Response<Void>>() { 
    @Override 
    public void accept(Response<Void> response) throws Exception { 
     final int responseCode = response.code(); 
     // TODO: Do whatever you want with the response code. 
    } 
}; 

调试结果:enter image description here

您可以尝试下面的代码。

通过获取使用ResponseBody格式可以得到没有POJO类的响应,然后像通常的JSON解析一样可以正常解析它。

API调用:

Call<ResponseBody> call = service.callLogin(AppConstants.mApiKey, model_obj); 

    call.enqueue(new Callback<ResponseBody>() { 
     @Override 
     public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 
      if(response.code() == 201) 
    { 
    JSONObject jobjresponse = null; 
    try { 
      jobjresponse = new JSONObject(mResponse.body().string()); 
      String status = jobjresponse.getString("status"); 
      JSONObject result = jobjresponse.getJSONObject("results"); 
        String msg = result.getString(“msg”); 
} catch (JSONException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      }  

     } 

     @Override 
     public void onFailure(Call<ResponseBody> call, Throwable t) { 

     } 
    }); 

更新接口类:

public interface RetrofitInterface { 
@Headers({"Content-Type: application/json", "Cache-Control: max-age=640000"}) 
@POST("v1/auth/") 
public Call<ResponseBody> callLogin(@Query("key") String key, @Body LoginModel body); 

public static final Retrofit retrofit = new Retrofit.Builder() 
     .baseUrl(“base url”) 
     .addConverterFactory(GsonConverterFactory.create()) 
     .build(); 
} 

样品响应:

{ "status":"true", "result":{"msg”:”created successfully”} }