无法在 call.enque() 中的改造中获得响应

Unable to get Response in retrofit in call.enque()

我正在从 Shopify 中配对 CollectionListing Api,我需要将 'collecton_listing_id' 作为参数传递给 url。我正在传递 id 但无法在回调中获得响应。

注意:我已经在 Postman 中使用参数测试了 api 并且工作正常。

这是我的实现。

ProductActivity.java

 private void processProductIds() {

    apiInterface = APIClient.getClient().create(ApiInterface.class);

    Call<List<Integer>> call = apiInterface.getProductIds(key, id);

    call.enqueue(new Callback<List<Integer>>() {
        @Override
        public void onResponse(Call<List<Integer>> call, Response<List<Integer>> response) {
            String s = String.valueOf(response.body());
            Log.d("S", "onResponse:" + s);
        }

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

        }
    });
}

ApiInterface.java

public interface ApiInterface {

@GET("collection_listings/{collection_listing_id}/product_ids.json")
Call<List<Integer>> getProductIds(@Header("Authorization") String accessToken, @Path("collection_listing_id") long id);

}

型号Class

public class IdExample {

@SerializedName("product_ids")
@Expose
private List<Integer> productIds = null;

public List<Integer> getProductIds() {
    return productIds;
}

public void setProductIds(List<Integer> productIds) {
    this.productIds = productIds;
 }
}

JSON响应

{
"product_ids": [
    1331092619350,
    1331125551190,
    1331126599766,
    1331121651798
  ]
}

谢谢。

您需要将 getProductIds 的 return 类型从 Call<List<Integer>> 更改为 Call<IdExample>

编辑:(如评论中所述)

您还应该将 List<Integer> productIds 更改为 List<Long> productIds

尝试使用

调用 API
mAPIService.functionpost("url/"+id).enqueue(new Callback<List<IdExample>>() {
        @Override
        public void onResponse(Call<List<IdExample>> call, Response<List<IdExample>> response) {
            if (response.isSuccessful()) {
                if (constantsVariables.debug) {
                    Log.i(constantsVariables.TAG, "/****************************/" + response.raw());

                }                 
        }

        @Override
        public void onFailure(@NonNull Call<List<IdExample>> call, @NonNull Throwable tr) {
            Log.d("TEST  Inside fail if", Log.getStackTraceString(tr));
        }
    });

应该是这样的

private void processProductIds() {

apiInterface = APIClient.getClient().create(ApiInterface.class);

Call<IdExample> call = apiInterface.getProductIds(key, id);

call.enqueue(new Callback<IdExample>() {
    @Override
    public void onResponse(Call<IdExample> call, Response<IdExample> response) {
        String s = String.valueOf(response.body().getProductIds());
        Log.d("S", "onResponse:" + s);
    }

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

    }
});
}

然后把api界面改成这样

public interface ApiInterface {
@GET("collection_listings/{collection_listing_id}/product_ids.json")
Call<IdExample> getProductIds(@Header("Authorization") String 
accessToken, @Path("collection_listing_id") long id);
}