Java 如何使用YouTube API V2从可恢复上传中获得响应?

Java 如何使用YouTube API V2从可恢复上传中获得响应?,java,youtube-api,youtube-data-api,Java,Youtube Api,Youtube Data Api,我正在使用他们的API(V2)实现一项将视频上传到YouTube的服务,但一旦上传视频,我需要找到响应,以便获得目标URL。有人知道如何做到这一点吗 下面是调用上载函数的调用: YouTubeService service = new YouTubeService("My_Service", developerKey); try { service.setUserCredentials(user, password); } catch (AuthenticationExcept

我正在使用他们的API(V2)实现一项将视频上传到YouTube的服务,但一旦上传视频,我需要找到响应,以便获得目标URL。有人知道如何做到这一点吗

下面是调用上载函数的调用:

YouTubeService service = new YouTubeService("My_Service", developerKey);

 try {
      service.setUserCredentials(user, password);
 } catch (AuthenticationException e) {
      System.out.println("Invalid login credentials.");
      return;
 }

 youtubeURL = YouTubeUploadClient.uploadVideo(service);
下面是上传功能代码,正如我所说的:

public static String uploadVideo(YouTubeService service)
        throws IOException, ServiceException, InterruptedException, JSONException {

    String youtubeURL = null;
    File videoFile = new File("c://video.mp4");

    if (!videoFile.exists()) {
        System.out.println("Sorry, that video doesn't exist.");
        return null;
    }

    MediaFileSource ms = new MediaFileSource(videoFile, "video/mp4");
    String videoTitle = "Title";

    VideoEntry newEntry = new VideoEntry();
    YouTubeMediaGroup mg = newEntry.getOrCreateMediaGroup();
    mg.addCategory(new MediaCategory(YouTubeNamespace.CATEGORY_SCHEME, "Games"));
    mg.setTitle(new MediaTitle());
    mg.getTitle().setPlainTextContent("Title");
    mg.setKeywords(new MediaKeywords());
    mg.getKeywords().addKeyword("Test");
    mg.setDescription(new MediaDescription());
    mg.getDescription().setPlainTextContent("Description");

    FileUploadProgressListener listener = new FileUploadProgressListener();
    ResumableGDataFileUploader uploader = new ResumableGDataFileUploader.Builder(
            service, new URL("http://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads"), ms, newEntry)
            .title(videoTitle)
            .trackProgress(listener, 1000)
            .chunkSize(10000000)
            .build();

    uploader.start();
    while (!uploader.isDone()) { Thread.sleep(25); }

    switch(uploader.getUploadState()) {
        case COMPLETE: System.out.println("Uploaded successfully"); return null;
        case CLIENT_ERROR: System.out.println("Upload Failed"); return null;
        default: System.out.println("Unexpected upload status"); return null;
    }
}

private static class FileUploadProgressListener implements ProgressListener {
    public synchronized void progressChanged(ResumableHttpFileUploader uploader)
    {
        switch(uploader.getUploadState()) {
            case COMPLETE: System.out.println("Upload Completed"); break;
            case CLIENT_ERROR: System.out.println("Upload Failed"); break;
            case IN_PROGRESS: System.out.println(String.format("Upload in progress: %3.0f", uploader.getProgress() * 100) + "%"); break;
            case NOT_STARTED: System.out.println("Upload Not Started"); break;
        }
    }
}

在YouTube API论坛()中找到此响应:

ResumableDataFileUploader uploader=新建ResumableDataFileUploader.Builder(
服务,新URL(“http://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads)女士,新条目)
.标题(视频标题)
.trackProgress(监听器,1000)
.chunkSize(10000000)
.build();
Future futureResponse=uploader.start();
而(!uploader.isDone()){Thread.sleep(1000);}
开关(uploader.getUploadState()){
案例完成:
ResumableHttpFileUploader.ResponseMessageResponseMessage=FutureSponse.get();
VideoEntry VideoEntry=新的VideoEntry();
parseAtom(新的ExtensionProfile(),responseMessage.getInputStream());
youtubeURL=videoEntry.gethtmlink().getHref();
logger.info(“上传成功”);
返回youtubeURL;
案例客户端_错误:logger.ERROR(“上载失败”);返回null;
默认值:logger.warn(“意外上载状态”);返回null;
}
        ResumableGDataFileUploader uploader = new ResumableGDataFileUploader.Builder(
                service, new URL("http://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads"), ms, newEntry)
                .title(videoTitle)
                .trackProgress(listener, 1000)
                .chunkSize(10000000)
                .build();

        Future<ResumableHttpFileUploader.ResponseMessage> futureResponse = uploader.start();

        while (!uploader.isDone()) { Thread.sleep(1000); }

        switch(uploader.getUploadState()) {
            case COMPLETE:
                ResumableHttpFileUploader.ResponseMessage responseMessage = futureResponse.get();
                VideoEntry videoEntry = new VideoEntry();
                videoEntry.parseAtom(new ExtensionProfile(), responseMessage.getInputStream());
                youtubeURL = videoEntry.getHtmlLink().getHref();
                logger.info("Uploaded successfully");
                return youtubeURL;
            case CLIENT_ERROR: logger.error("Upload Failed"); return null;
            default: logger.warn("Unexpected upload status"); return null;
        }