通过Java API将视频上传到YouTube时出现IOException

时间:2010-12-20 12:59:34

标签: java youtube

我一直在尝试使用Direct Uploading通过JavaAPI将视频上传到YouTube。当我调用insert()方法时遇到问题,我得到一个带有错误消息的IOException

“将请求正文写入服务器时出错”

我已经验证我正在创建的File对象以及我的VideoEntry对象中的所有细节都是正确的。我一直在使用Fiddler来监控我的机器上的活动,并且没有请求上传API,因此问题不存在。以下是我正在使用的代码的摘要:

VideoEntry newVideo = new VideoEntry();
//Defined video properties such as title and description here.
MediaFileSource ms = new MediaFileSource(videoFile, "video/flv");
newVideo.setMediaSource(ms);
VideoEntry createdEntry = settings.insert(new URL(apiUrl), newVideo);

插入调用抛出IOException(设置是我的YouTubeService实例),API URL似乎是正确的。

在此之前,我已成功使用C#API上传此视频,因此我知道视频文件有效。

- 更新 这是apiURL值:

http://uploads.gdata.youtube.com/feeds/api/users/default/uploads

2 个答案:

答案 0 :(得分:0)

确保videoFile实际指向正确的本地文件。 File(String)构造函数不会验证它是否确实存在。 MediaFileSource构造函数和VideoEntry.setMediaSource()方法也从不检查该文件是否有效。错误消息“将请求正文写入服务器时出错”听起来像插入方法无法找到它尝试发送的消息正文。

File videoFile = new File("...");
if (videoFile.exists() == false) {
    System.err.println("FAIL");
}

测试文件是否存在。

答案 1 :(得分:0)

如果您位于防火墙环境下,并且已在jvm系统属性中配置了代理设置。尝试将youtube服务配置为:

service.setChunkedMediaUpload(MediaService.NO_CHUNKED_MEDIA_REQUEST);

或在你的情况下

settings.setChunkedMediaUpload(MediaService.NO_CHUNKED_MEDIA_REQUEST);

因为你说的是​​你的YouTubeService实例。

希望这会有所帮助。