当前位置: 首页 > 知识库问答 >
问题:

处理没有pojo类的改装状态代码

陈文景
2023-03-14

我从服务器得到以下响应:状态代码201已创建。没有实际响应(返回的对象等),因此不需要创建POJO类。

所以,我不知道如何在不创建POJO类的情况下处理这个状态代码。有没有任何选项可以使写代码不使用POJO类?

共有2个答案

那鹏
2023-03-14

你可以试试下面的代码。

不需要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”} }
郤瀚
2023-03-14

改造API具有响应类,可以封装您的响应。

只要您不想麻烦处理响应数据,您就可以将服务实现为:

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.
  }
};
 类似资料:
  • 问题内容: 所以,我有多个ReactComponent。最初,我以为会有一个带有其自身状态的父组件(简称为GrandPa),它将有关其状态的一些信息传递给另一个组件(称为Parent)。同样,父母将他的一些财产传给孩子,孩子则传给孙子。因此,我们具有层次结构: 爷爷->父母->孩子->孙子 但是,我很快意识到,当我使用method 更改GrandPa的状态时,所做的更改不会沿通道向下级联。我意识到

  • 问题内容: 我想问一下Retrofit 2.0 一直以来,我只知道使用GSON Converter进行翻新并获得对象。 但是我不知道如何使用像这样的API获取数据 https://hacker- news.firebaseio.com/v0/topstories.json?print=pretty 我尝试显示所有热门故事并在我首先加载所有热门故事后获取对象。 我只知道像这样的老派风格:http :

  • null null 后端代码有一个枚举,它在代码中赋予这些预定义整数一个含义 web服务API将返回状态号 前端代码有一个类似的枚举,它在代码中赋予这些预定义整数一个含义。(如后端代码) null null 优点: 数据库定义良好并规范化 从API返回的数据是描述性的,并提供了所需的含义。 使用的状态常量已包含其含义,这减少了出错的机会。 对数据库中的列使用枚举类型有其局限性。以后使用ALTER命

  • 我有一个用于搜索的RESTendpoint。

  • 写rust 程序,不知道全局状态放那里,lazy_static 太难用了,难道要把sqlite 中吗

  • 我怎么才能修好这个?