C# HttpClient正在忽略请求URI的`www.`部分

C# HttpClient正在忽略请求URI的`www.`部分,c#,.net,httprequest,.net-4.5,dotnet-httpclient,C#,.net,Httprequest,.net 4.5,Dotnet Httpclient,我正在尝试使用HttpClient发送GET请求: public static HttpClient Client { get { var handler = new HttpClientHandler() { AutomaticDecompression = System.Net.DecompressionMethods.Deflate | System.Net.DecompressionMethods.GZip }; var http = new HttpClient(han

我正在尝试使用
HttpClient
发送
GET
请求:

public static HttpClient Client { get
{
    var handler = new HttpClientHandler() { AutomaticDecompression = System.Net.DecompressionMethods.Deflate | System.Net.DecompressionMethods.GZip };
    var http = new HttpClient(handler) { BaseAddress = new Uri("https://www.example.com/") };
    http.DefaultRequestHeaders.Accept.Clear();
    http.DefaultRequestHeaders.Accept.TryParseAdd("*/*");
    http.DefaultRequestHeaders.AcceptLanguage.TryParseAdd("en-US;q=0.6,en;q=0.4");
    http.DefaultRequestHeaders.AcceptEncoding.TryParseAdd("gzip, deflate, br");
    http.DefaultRequestHeaders.Host = "example.com";
    http.DefaultRequestHeaders.Add("X-Requested-With", "XMLHttpRequest");

    http.DefaultRequestHeaders.Add("Connection", "keep-alive");
    http.DefaultRequestHeaders.Add("Keep-Alive", "600");
    http.DefaultRequestHeaders.UserAgent.TryParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36");
    ServicePointManager
        .ServerCertificateValidationCallback +=
        (sender, cert, chain, sslPolicyErrors) => true;
    return http;
}
...
using (var client = HttpHelper.Client)
using (var res = await client.GetAsync("api/stuff/filter?order=" + order + "&page=" + page))
    if (res.IsSuccessStatusCode)
    {
        var json = await res.Content.ReadAsStringAsync();
        var response = JsonConvert.DeserializeObject<AnimeResponse>(json);
        return response;
    }
publicstatichttpclient客户端{get
{
var handler=new-HttpClientHandler(){AutomaticDecompression=System.Net.DecompressionMethods.Deflate | System.Net.DecompressionMethods.GZip};
var http=new-HttpClient(handler){BaseAddress=new-Uri(“https://www.example.com/") };
http.DefaultRequestHeaders.Accept.Clear();
http.DefaultRequestHeaders.Accept.tryparsead(“*/*”);
http.DefaultRequestHeaders.AcceptLanguage.tryparsead(“en-US;q=0.6,en;q=0.4”);
http.DefaultRequestHeaders.AcceptEncoding.tryparsead(“gzip,deflate,br”);
http.DefaultRequestHeaders.Host=“example.com”;
Add(“X-request-With”,“XMLHttpRequest”);
Add(“连接”,“保持活动”);
Add(“Keep-Alive”,“600”);
http.DefaultRequestHeaders.UserAgent.tryparsead(“Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/59.0.3071.115 Safari/537.36”);
服务点管理器
.ServerCertificateValidationCallback+=
(发件人、证书、链、sslPolicyErrors)=>真;
返回http;
}
...
使用(var client=HttpHelper.client)
使用(var res=await client.GetAsync(“api/stuff/filter?order=“+order+”&page=“+page))
如果(res.IsSuccessStatusCode)
{
var json=await res.Content.ReadAsStringAsync();
var response=JsonConvert.DeserializeObject(json);
返回响应;
}
不幸的是,这会在没有
www.
部分的情况下发送一个请求,并导致
301
状态代码以及许多许多失败的重定向到同一地址(没有
www.
部分)

我怎样才能解决这个问题


编辑:当我使用Fiddler重新发送请求时,它也会返回301,但n会正确重定向到
wwww.
HttpClient
不会,只会重定向到相同的无www URI。

您试图从哪里请求数据-
https://www.example.com/
?那么为什么要设置请求默认主机名to
masterani.me
,我想知道…?是什么让你相信它在没有
www
的情况下发送请求?你在运行Fiddler吗?IE浏览器中的哪个站点被允许和阻止?你能使用IE访问站点吗?@jdweng是的,我能。如果你注释掉这一行
http.DefaultRequestHeaders.Host=“example.com”,会发生什么;