簡體   English   中英

頁面重定向時 HttpWebRequest 和 Restsharp 不返回響應

[英]HttpWebRequest and Restsharp do not return response when the page is redirected

我嘗試創建簡單的控制台應用程序,在其中向 url 發送請求並讀取收到的響應代碼:

HttpWebRequest 實現

HttpWebRequest init = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)init.GetResponse();
Console.WriteLine(resp.StatusCode);

RestSharp 實現

var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.StatusCode);

在大多數情況下,它工作得很好。 但是當網站重定向到另一個頁面或端口時(通常是用 .net 編寫的頁面,帶有反向代理,例如https://www.eventim.pl/ ),程序會嘗試發送請求,但從未得到任何響應。

我嘗試使用:

//HttpWebRequest
init.AllowAutoRedirect = true;

//RestSharp
client.FollowRedirects = true;

但是,情況是一樣的,請求發送了,但從來沒有收到響應,以超時結束。

編輯我: HttpClient 實現

HttpClient client = new HttpClient();
try
{
  HttpResponseMessage response = await client.GetAsync("https://www.eventim.pl");
  response.EnsureSuccessStatusCode();
  var res = response.StatusCode;
  Console.WriteLine((int)res);
}
catch (HttpRequestException e)
{
  Console.WriteLine("\nException Caught!");
  Console.WriteLine("Message :{0} ", e.Message);
}

在這種情況下,它也會在達到response.EnsureSuccessStatusCode();之前超時。

該問題與 .NET 或反向代理無關,並且與相關站點永久阻止 HTTP 請求這一事實有關,除非存在以下 HTTP 標頭並具有值:

Accept
Accept-Encoding
Accept-Language

例如,對您的代碼進行以下修改幾乎會立即產生 200 響應:

var client = new HttpClient();

try
{
    var request = new HttpRequestMessage(HttpMethod.Get, "https://www.eventim.pl");
    request.Headers.Add("Accept", "text/html");
    request.Headers.Add("Accept-Encoding", "gzip, deflate, br");
    request.Headers.Add("Accept-Language", "en");

    var response = await client.SendAsync(request);
    response.EnsureSuccessStatusCode();
    var res = response.StatusCode;
    Console.WriteLine((int)res);
}
catch (Exception e)
{
    Console.WriteLine("\nException Caught!");
    Console.WriteLine("Message: {0}", e.Message);
}

將來,請使用瀏覽器的網絡請求控制台和/或 Fiddler 之類的工具來檢查 HTTP 請求有效與無效的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM