如何从Web客户端修复问题错误404



嘿,伙计们

我的代码有问题。大约一周后,如果没有任何更改,我的代码就不能再工作了。我很确定,我的能力应该行得通。我得到的只是错误404:禁止。下面是我的代码片段。我还读到关于添加web客户端的头的文章,但这并没有帮助。还有其他建议吗?如果我的语法不太好,我很抱歉,这是我在stackoverflow上的第一篇文章。
提前感谢
string epicId = "ManuelNotManni";
WebClient webClient = new WebClient();
Uri uri = new Uri("https://api.tracker.gg/api/v2/rocket-league/standard/profile/epic/");
string result = String.Empty;
try
{
string website = $"{uri.ToString()}{epicId}?";
result = webClient.DownloadString(website);
}
catch (Exception ex)
{
Console.WriteLine($"Error:n{ex}");
Console.ReadLine();
}
finally
{
webClient.Dispose();
}

这就是确切的错误:

System.Net.WebException:远程服务器返回错误:(403(Forbidden。位于System.Net.HttpWebRequest.GetResponse((位于System.Net.WebClient.GetWebResponse(WebRequest请求(在System.Net.WebClient.DownloadBits(WebRequest请求,流写入流(位于System.Net.WebClient.DownloadDataInternal(Uri地址,WebRequest&request(位于System.Net.WebClient.DownloadString(Uri地址(位于System.Net.WebClient.DownloadString(字符串地址(在>C: \Users\Manue\source\repos\TestProject\Program.cs:line 17

你说得对。您的代码应该可以正常工作。问题是你请求的URL实际上是:

https://api.tracker.gg/api/v2/rocket-league/standard/profile/epic/ManuelNotManni?

在任何情况下,无论您使用浏览器、代码还是邮递员,都会返回403状态代码。我建议在使用邮递员时查看一下响应机构。

它显示了这个

<html class="no-js" lang="en-US">
<!--<![endif]-->
<head>
<title>Attention Required! | Cloudflare</title>
<meta name="captcha-bypass" id="captcha-bypass" />

Tracker.gg希望API用户在访问API之前向他们注册应用程序。

你需要做的是首先进入他们的"入门"页面。在这里,你必须创建一个应用程序,它应该为你提供一个身份验证密钥。

完成此操作后,您需要稍微更改代码以添加身份验证标头。例如:

var webClient = new WebClient();
webclient.Headers.Add("TRN-Api-Key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")

附带说明一下,WebClient已经被弃用,建议从现在起使用HttpClient

var epicId = "ManuelNotManni";
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("TRN-Api-Key", "YOUR API KEY GOES HERE");
// Simplifying Uri creation:
var uri = new Uri($"https://api.tracker.gg/api/v2/rocket-league/standard/profile/epic/{epicId}");
var result = string.Empty; // C# prefers lowercase string
try
{
var response = await httpClient.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
result = await response.Content.ReadAsStringAsync();
}
else
{
Console.WriteLine($"Unable to retrieve data for {epicId}.");
Console.WriteLine($"Statuscode: {response.StatusCode}");
Console.WriteLine($"Reason: {response.ReasonPhrase}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error:n{ex}");
Console.ReadLine();
}
finally
{
httpClient.Dispose();
}

当我们违反Cloudflare设置的防火墙规则时,就会发生这种情况,您可以访问此博客了解更多详细信息。https://community.cloudflare.com/t/community-tip-fixing-error-1020-access-denied/66439

最新更新