如何获得 Youtube Api Json 响应

How to get Youtube Api Json Response

我在我的应用程序中实施了插入评级方法。我搜索了超过 1 天才能得到回复。在 this page i have check that insert like method and json is giving response . Look .

但我找不到任何方法在我的应用程序中获得响应。我该如何解决这个问题?

@SuppressLint("StaticFieldLeak")
class Insert extends AsyncTask<Object,Object, Object> {

    @Override
    protected Object doInBackground(Object... objects) {



        if (Email!=null){

            mCredential = GoogleAccountCredential.usingOAuth2(
                    getApplicationContext(), Arrays.asList(YouTubeScopes.YOUTUBE))
                    .setBackOff(new ExponentialBackOff());



            mCredential.setSelectedAccountName(Email);

            HttpTransport transport = AndroidHttp.newCompatibleTransport();
            JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
            YouTube youtubeService = new YouTube.Builder(
                    transport, jsonFactory, mCredential)
                    .setApplicationName(LikeInsertActivity.this.getResources().getString(R.string.app_name))
                    .build();
            // Define and execute the API request

            try {
                YouTube.Videos.Rate request = youtubeService.videos()
                        .rate(VID, "like");

                request.execute();








                runOnUiThread(new Runnable() {
                    public void run() {


                    }
                });


            } catch (IOException e) {
                e.printStackTrace();

            }

        }

        return null;

    }



}

Rate.execute() 的 return 类型为 Void。查看 HTTP 时,您似乎收到 204 无内容的良好响应,否则出现异常。
https://developers.google.com/youtube/v3/docs/videos/rate

正如 @mavriksc 提到的那样 Rate.execute() returns Void。这是因为所有这些对象都是基于 superclass com.google.api.services.youtube.YouTubeRequest<java.lang.Void>

但是,除了 execute 方法之外,您还可以使用 AbstractGoogleClientRequest 定义的其他方法,它是 YouTubeRequest.

的超级 class

例如executeUnparsed returns a com.google.api.client.HttpResponse对象。

因此获取 HttpResponse 对象并检查 StatusCode 与 204 似乎是您想要的解决方案。


示例:

try {
    final YouTube.Videos.Rate request = youtubeService.videos().rate(VID, "like");

    runOnUiThread(new Runnable() {
        public void run() {

            HttpResponse response = request.executeUnparsed();

            // There should be a matching constant for 204 defined somewhere, I haven't found it yet
            if (response.getStatusCode() == 204) {
                //  request successfull
            }
        }
    });
} catch (IOException e) {
    e.printStackTrace();
}

注:
Android 强制开发人员在后台任务中做某些(耗时的)事情(如网络通信)以防止 UI 阻塞。