gpt4 book ai didi

C# HttpClient.SendAsync 始终返回 404 但 URL 在浏览器中有效

转载 作者:太空狗 更新时间:2023-10-29 17:49:16 26 4
gpt4 key购买 nike

我正在开发一个 C# 控制台应用程序来测试 URL 是否有效。它适用于大多数 URL。但我们发现在某些情况下,应用程序总是从目标站点收到 404 响应,但 URL 实际上在浏览器中有效。当我在 DHC(Dev HTTP 客户端)等工具中尝试这些 URL 时,它们也有效。

一开始,我认为这可能是没有添加正确标题的原因。但是在尝试使用 Fiddler 编写具有相同 header 的 http 请求后,它在 Fiddler 中工作。

那么我的代码有什么问题呢? .NET HttpClient 是否存在错误?

以下是我的测试应用程序的简化代码:

class Program
{
static void Main(string[] args)
{
var urlTester = new UrlTester("http://www.hffa.it/short-master-programs/fashion-photography");

Console.WriteLine("Test is started");

Task.WhenAll(urlTester.RunTestAsync());

Console.WriteLine("Test is stoped");
Console.ReadKey();
}


public class UrlTester
{
private HttpClient _httpClient;
private string _url;

public UrlTester(string url)
{
_httpClient = new HttpClient
{
Timeout = TimeSpan.FromMinutes(1)
};

// Add headers
_httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36");
_httpClient.DefaultRequestHeaders.Add("Accept-Encoding", "gzip,deflate,sdch");
_httpClient.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
_httpClient.DefaultRequestHeaders.Add("Accept-Language", "sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4");

_url = url;
}

public async Task RunTestAsync()
{
var httpRequestMsg = new HttpRequestMessage(HttpMethod.Get, _url);

try
{
using (var response = await _httpClient.SendAsync(httpRequestMsg, HttpCompletionOption.ResponseHeadersRead))
{
Console.WriteLine("Response: {0}", response.StatusCode);
}
}
catch (HttpRequestException e)
{
Console.WriteLine(e.InnerException.Message);
}
}
}

}

最佳答案

这似乎是接受的语言的问题。使用以下 Accept-Language header 值时,我收到了 200 响应

_httpClient.DefaultRequestHeaders.Add("Accept-Language", "en-GB,en-US;q=0.8,en;q=0.6,ru;q=0.4");

enter image description here

附注我假设您知道在您的示例中 _client 应该在 urlTester 构造函数中读取 _httpClient 否则它不会构建。

关于C# HttpClient.SendAsync 始终返回 404 但 URL 在浏览器中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33554810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com