問題は次のとおりです。
{
"error":{
"errors":[
{
"domain":"youtube.video",
"reason":"mediaBodyRequired",
"message":"Bad Request",
"locationType":"other",
"location":"body"
}
],
"code":400,
"message":"Bad Request"
}
}
私のコードは次のようになります。
private void CreateUploadRequest(SynchronisedAsset asset)
{
var endPoint = api.ApiUrl + "/videos?uploadType=resumable&part=snippet"; // read for the different ways to interact with videos https://developers.google.com/youtube/v3/docs/#Videos
var maxSize = 68719476736; // 64 gig
try
{
var location = CompanyProvider.GetUploadLocation(this.baseUploadDirectory, companyId, FileType.Asset);
var filePath = System.IO.Path.Combine(location, asset.FileName);
var fileBytes = System.IO.File.ReadAllBytes(filePath);
if (maxSize > fileBytes.Length && (asset.MimeType.ToLower().StartsWith("video/") || asset.MimeType.ToLower().Equals("application/octet-stream")))
{
var json = Encoding.ASCII.GetBytes("{ \"snippet\": { \"title\": \"" + asset.FileName + "\", \"description\": \"This is a description of my video\" } }");
var request = WebRequest.Create(endPoint);
request.Headers[HttpRequestHeader.Authorization] = string.Format("Bearer {0}", api.Tokens.AccessToken);
request.ContentLength = json.Length;
request.ContentType = "application/json; charset=UTF-8";
request.Headers["X-Upload-Content-Length"] = fileBytes.Length.ToString();
request.Headers["X-Upload-Content-Type"] = asset.MimeType;
request.Method = "POST";
using (var stream = request.GetRequestStream())
{
stream.Write(json, 0, (int)json.Length);
}
var response = request.GetResponse();
}
}
catch (WebException ex)
{
eventLog.WriteEntry("Error uploading to youtube.\nEndpoint: " + endPoint + "\n" + ex.ToString(), EventLogEntryType.Error);
}
}
ここのドキュメントから、なぜそのエラーが発生するのかよくわかりません:
https://developers.google.com/youtube/v3/guides/using_resumable_upload_protocol
200 ok メッセージで戻ってくるはずですが、そうではありません。Google APIリファレンスによると、問題は次のとおりです。
リクエストに動画コンテンツが含まれていません。
すでにjsonを渡したので、実際のビデオを意味すると思いますが、jsonと同時にビデオを投稿する方法(または場合でも)がわかりません。
私を助けてください、これは私を狂わせています:)
乾杯
乾杯、/r3plica