远程服务器返回错误: (403) 已禁止.,c# - 如何解决远程服务器返回错误:(403)禁止。 Dailymotion API - 堆栈内存溢出...

因此,我正在使用Dailymotion API上传视频,并使用从GitHub获得的代码,它可以正常工作,但是在4个视频之后,出现了以下异常:

{“远程服务器返回错误:(403)禁止。”}

我在PublishVideo方法中遇到错误

var response = request.GetResponse();

主要代号

var accessToken = GetAccessToken();

Authorize(accessToken);

Console.WriteLine("Access token is " + accessToken);

var fileToUpload = @"E:\Courses\[FreeCourseSite.com] Udemy - Entity Framework in Depth The Complete Guide\3. Building a Model using Database-First Workflow\11. Summary.mp4";

Console.WriteLine("File to upload is " + fileToUpload);

var uploadUrl = GetFileUploadUrl(accessToken);

Console.WriteLine("Posting to " + uploadUrl);

var response = GetFileUploadResponse(fileToUpload, accessToken, uploadUrl);

Console.WriteLine("Response:\n");

Console.WriteLine(response + "\n");

Console.WriteLine("Publishing video.\n");

var uploadedResponse = PublishVideo(response, accessToken);

Console.WriteLine(uploadedResponse);

Console.WriteLine("Done. Press enter to exit.");

Console.ReadLine();

}

private static UploadResponse GetFileUploadResponse(string fileToUpload, string accessToken, string uploadUrl)

{

var client = new WebClient();

client.Headers.Add("Authorization", "OAuth " + accessToken);

var responseBytes = client.UploadFile(uploadUrl, fileToUpload);

var responseString = Encoding.UTF8.GetString(responseBytes);

var response = JsonConvert.DeserializeObject(responseString);

return response;

}

private static UploadedResponse PublishVideo(UploadResponse uploadResponse, string accessToken)

{

var request = WebRequest.Create("https://api.dailymotion.com/me/videos?url=" + HttpUtility.UrlEncode(uploadResponse.url));

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

request.Headers.Add("Authorization", "OAuth " + accessToken);

var requestString = String.Format("title={0}&tags={1}&channel={2}&private={3}&published={4}",

HttpUtility.UrlEncode("123123123"),

HttpUtility.UrlEncode("tag1"),

HttpUtility.UrlEncode("news"),

HttpUtility.UrlEncode("true"),

HttpUtility.UrlEncode("true"));

var requestBytes = Encoding.UTF8.GetBytes(requestString);

var requestStream = request.GetRequestStream();

requestStream.Write(requestBytes, 0, requestBytes.Length);

var response = request.GetResponse();

var responseStream = response.GetResponseStream();

string responseString;

using (var reader = new StreamReader(responseStream))

{

responseString = reader.ReadToEnd();

}

var uploadedResponse = JsonConvert.DeserializeObject(responseString);

return uploadedResponse;

}

private static string GetAccessToken()

{

var request = WebRequest.Create("https://api.dailymotion.com/oauth/token");

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

var requestString = String.Format("grant_type=password&client_id={0}&client_secret={1}&username={2}&password={3}",

HttpUtility.UrlEncode(SettingsProvider.Key),

HttpUtility.UrlEncode(SettingsProvider.Secret),

HttpUtility.UrlEncode(SettingsProvider.Username),

HttpUtility.UrlEncode(SettingsProvider.Password));

var requestBytes = Encoding.UTF8.GetBytes(requestString);

var requestStream = request.GetRequestStream();

requestStream.Write(requestBytes, 0, requestBytes.Length);

var response = request.GetResponse();

var responseStream = response.GetResponseStream();

string responseString;

using (var reader = new StreamReader(responseStream))

{

responseString = reader.ReadToEnd();

}

var oauthResponse = JsonConvert.DeserializeObject(responseString);

return oauthResponse.access_token;

}

private static void Authorize(string accessToken)

{

var authorizeUrl = String.Format("https://api.dailymotion.com/oauth/authorize?response_type=code&client_id={0}&scope=read+write+manage_videos+delete&redirect_uri={1}",

HttpUtility.UrlEncode(SettingsProvider.Key),

HttpUtility.UrlEncode(SettingsProvider.CallbackUrl));

Console.WriteLine("We need permissions to upload. Press enter to open web browser.");

Console.ReadLine();

Process.Start(authorizeUrl);

var client = new WebClient();

client.Headers.Add("Authorization", "OAuth " + accessToken);

Console.WriteLine("Press enter once you have authenticated and been redirected to your callback URL");

Console.ReadLine();

}

private static string GetFileUploadUrl(string accessToken)

{

var client = new WebClient();

client.Headers.Add("Authorization", "OAuth " + accessToken);

var urlResponse = client.DownloadString("https://api.dailymotion.com/file/upload");

var response = JsonConvert.DeserializeObject(urlResponse).upload_url;

return response;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值