处理翻新状态代码没有Pojo类
问题描述:
我从我的服务器得到了以下响应:状态代码201 Created
。 没有实际的响应(返回的对象等),所以不需要创建POJO类。处理翻新状态代码没有Pojo类
所以,我不知道我应该如何处理这个状态码,而不需要创建一个POJO类。是否有任何选项可以在不使用POJO类的情况下编写代码?
答
改进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.
}
};
答
您可以尝试下面的代码。
通过获取使用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”} }
入住这 http://stackoverflow.com/questions/31808083/how -to-get-retrofit-success-responce-status-codes –
使用'拨打'。 –
看看这个线程:http://stackoverflow.com/questions/21398598/how-to-post-raw-whole-json-in-the-body-of-a-retrofit-request/36821182#36821182 – TommySM