簡體   English   中英

retrofit2。 響應體是null

[英]retrofit2. response body is null

    Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.Q_BASE)
            .addConverterFactory(GsonConverterFactory.create()).client(client).build();
    Api.ApiInter inter = retrofit.create(Api.ApiInter.class);
    Call<JSONObject> call = inter.getMovieData(sortType[0], Api.P_KEY);
    call.enqueue(new Callback<JSONObject>() {
        @Override
        public void onResponse(Call<JSONObject> call, Response<JSONObject> response) {
            /* */
        }

        @Override
        public void onFailure(Call<JSONObject> call, Throwable t) {
            Log.d(LOG_TAG, "failed to get response.");
        }
    });

/

public class Api {
    public static final String Q_BASE = "http://api.themoviedb.org/";
    public static final String Q_KEY = "api_key";
    public static final String Q_RESULT = "results";
    public static final String Q_POSTER_PATH = "poster_path";
    public static final String Q_TITLE = "title";
    public static final String Q_OVERVIEW = "overview";
    public static final String Q_DATE = "release_date";
    public static final String Q_VOTE_AVERAGE = "vote_average";
    public static final String P_KEY = "This is private key";
    public static final String REQUEST = "GET";

    public static final String I_BASE = "http://image.tmdb.org/";
    public static final String P_POSTER_SIZE = "w185";

    public interface ApiInter {
        @GET("3/movie/{sort}")
        Call<JSONObject> getMovieData(@Path("sort") String sort, @Query("api_key") String key);

        @GET("t/p/{size}/{url}")
        Call<Bitmap> getMoviePoster(@Path("size") String size, @Path("url") String url);
    }
}

[ 調試器]

當我調試我的應用程序時,response.body()始終僅重新啟動“{}”。 如果我更改了Call的元素,則返回值將為null。 我不知道原因。 我想獲得JSON數據。 我怎么解決這個問題? 我可以設置okhttp客戶端嗎? 或更改Call的返回類型? 請給我答案。

這是一個非常簡單的錯誤。 如果你有像我這樣的問題,請檢查這三件事。

  1. 你的改裝轉換器是Gson。
  2. 您的api接口方法返回Call<JSONObjcet>

  3. 請求成功,但response.body()只是“{}”

改造使用GsonConverter。 所以我們需要在com.google.gson包中使用jsonObject。 您必須將JSONObject更改為JsonObject

圖像中的響應代碼為200,表示請求成功。 所以服務器正在返回{}。 也許沒有與您作為參數傳遞的sortType相關的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM