下一页令牌不起作用,仅显示最多 (50) 个结果

Next Page Token is not functional and display only maximum (50) results

我正在尝试使用 youtube 数据 api 获取频道的所有视频,但我的代码出错并且不响应 PAGE 令牌

displayVideos();

    }


    private void displayVideos ()
    {
        RequestQueue requestQueue= Volley.newRequestQueue(this);
        StringRequest stringRequest=new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {



            @Override
            public void onResponse(String response) {
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    System.out.println(jsonObject.get("nextPageToken"));
                    JSONArray jsonArray = jsonObject.getJSONArray("items");
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject jsonObject1 = jsonArray.getJSONObject(i);
                        if (jsonObject1.has("id")){
                            JSONObject jsonVideoId=jsonObject1.getJSONObject("id");
                            if (jsonVideoId.has("kind")){
                                if(jsonVideoId.getString("kind").equals("youtube#video")){
                                    JSONObject jsonObjectSnippet = jsonObject1.getJSONObject("snippet");
                                    JSONObject jsonObjectDefault=jsonObjectSnippet.getJSONObject("thumbnails").getJSONObject("medium");

                                    String video_id=jsonVideoId.getString("videoId");

                                    VideoDetails vd=new VideoDetails();

                                    vd.setVideoId(video_id);
                                    vd.setTitle(jsonObjectSnippet.getString("title"));
                                    vd.setDescription(jsonObjectSnippet.getString("description"));
                                    vd.setUrl(jsonObjectDefault.getString("url"));

                                    videoDetailsoArrayList.add(vd);

                                }
                                //  recyclerView.setAdapter(adapter);
                                // adapter.notifyDataSetChanged();
                            }
                        }
                    }
                }catch (JSONException e) {
                    e.printStackTrace();
                }

我试图解析的url是

    String url="https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCVMWWQ985A_-SESZUy_SsVQ&maxResults=50&pageToken="+nextPageToken+"&order=date&pageToken=CAUQAA&key=API_KEY";

我一直在搜索以在 android studio 中应用下一页标记或页面标记,但无法获得具体教程。有很多示例,但在 android studio 中天真,我无法将其实现到我的代码中。

请注意,您的 URL 确实包含参数 pageToken:

的两个实例

"https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCVMWWQ985A_-SESZUy_SsVQ&maxResults=50&pageToken="+nextPageToken+"&order=date&pageToken=CAUQAA&key=API_KEY".

它应该只有一个才能正常工作;更准确地说,您的 URL 应该只包含这个实例:pageToken="+nextPageToken+".


另一方面,您上面的代码没有显示实现分页的循环。那是您没有显示您实际为变量 nextPageToken.

分配有效值的代码段

因此我无法判断您的程序是否有效。


分页循环如下所示:

// initially no pageToken
nextPageToken = null;
// URL as above, without the parameter pageToken
url = ...

do {
  invoke the API on the URL: url + (nextPageToken != null ? "&pageToken=" + nextPageToken : "")
  nextPageToken = jsonObject.get("nextPageToken");
} while (nextPageToken != null)