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

时间:2020-09-14 17:26:41

标签: java android-studio youtube-data-api

我正在尝试使用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();
                }

我要解析的网址是

    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";

我一直在搜索b以在Android Studio中应用下一页令牌或页面令牌,但无法获得特定的教程。有很多例子,但是在android studio中很幼稚,我无法在代码中实现它。

1 个答案:

答案 0 :(得分:1)

请注意,您的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"

应该只有一个可以正常工作;更确切地说,您的网址应仅包含以下实例: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)