我一直在尝试使用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
答案 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实例。
希望这会有所帮助。