没有响应Deezer API请求“editorial / 0 / charts”

时间:2014-03-11 02:11:24

标签: android sdk deezer

我使用Deezer API v0.10.10来请求editorial/0/charts,但它不起作用。没有回应和例外。

DeezerRequest request = new DeezerRequest("editorial/0/charts");
AsyncDeezerTask task = new AsyncDeezerTask(mDeezerConnect,
                    new JsonRequestListener() {
                        @SuppressWarnings("unchecked")
                        @Override
                        public void onResult(final Object result, final Object requestId) {
                            PaginatedList<Track> resp = (PaginatedList<Track>) result;
                    });
task.execute(request);

我使用的是Deezer API v0.10.10和Android 4.0(API 14)或更高版本。

1 个答案:

答案 0 :(得分:0)

我从您的示例代码中假设您正在使用Deezer SDK for Android 0.10.10。

JsonRequestListener能够解析许多常见请求,但尚未解析所有可用的API请求,而您正在使用的请求尚未正确处理。不幸的是,此版本的SDK存在轻微错误,导致您遇到缺少回调。

以下是一个示例侦听器,您可以使用它来解析API对此特定请求的响应:

RequestListener listener = new RequestListener() {
    @SuppressWarnings("unchecked")
    @Override
    public void onComplete(String response, Object requestId) {

        List<Track> tracks;
        List<Artist> artists;
        List<Album> albums;
        try {
            JSONObject json = new JSONObject(response);

            tracks = (PaginatedList<Track>) JsonUtils
                    .deserializeObject(json.optJSONObject("tracks"));
            artists = (PaginatedList<Artist>) JsonUtils
                    .deserializeObject(json.optJSONObject("artists"));
            albums = (PaginatedList<Album>) JsonUtils
                    .deserializeObject(json.optJSONObject("albums"));
        } catch (Exception e) {
            tracks = Collections.emptyList();
            artists = Collections.emptyList();
            albums = Collections.emptyList();
            e.printStackTrace();
        }

        Log.i("Json",
                "Parsed " + tracks.size() + " tracks, " + albums.size()
                        + " albums and " + artists.size() + " artists");
    }

    @Override
    public void onOAuthException(OAuthException e, Object requestId) {
        e.printStackTrace();
    }

    @Override
    public void onMalformedURLException(MalformedURLException e, Object requestId) {
        e.printStackTrace();
    }

    @Override
    public void onIOException(IOException e, Object requestId) {
        e.printStackTrace();
    }

    @Override
    public void onDeezerError(DeezerError e, Object requestId) {
        e.printStackTrace();
    }
};

DeezerRequest request = new DeezerRequest("editorial/0/charts");
AsyncDeezerTask task = new AsyncDeezerTask(mConnect, mListener);
task.execute(request);