2017-03-26 1 views
0

코드를 디버깅하고 인터넷 검색을하면서 몇 시간을 보냈지 만 여전히 운이 없으므로 잘하면 도움이됩니다.C# HttpWebRequest 응답 시간이 브라우저에서 작동합니다.

나는 http://www.finishline.com의 출처를 얻으려고합니다. 잡기는 HttpWebRequest가 일부 지역 (슬로바키아의 경우처럼)에서 작동하지만 미국에서 내가 달성해야하는 것은 작동하지 않습니다.

미국에서는 request.GetResponse()가 시간 초과되었습니다. 무수한 헤더 조합을 시도했지만 성공하지는 못했습니다. 좀 도와 줄 수있어? 고마워요

var request = (HttpWebRequest)WebRequest.Create("http://www.finishline.com"); 

      request.CookieContainer = new CookieContainer(); 
      request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"; 
      request.AutomaticDecompression = (DecompressionMethods.GZip | DecompressionMethods.Deflate); 
      request.Headers.Add("Accept-Encoding", "gzip, deflate"); 
      request.Accept = " text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
      request.Headers.Add("Upgrade-Insecure-Requests", "1");     
      request.Headers.Add("Accept-Language", "sk,cs;q=0.8,en-US;q=0.5,en;q=0.3"); 
      request.KeepAlive = true; 
      request.Headers.Add("Cache-Control", "max-age=0"); 

      var responseText = ""; 
      using (var response = request.GetResponse()) 
      { 
       var httpWebResponse = response.GetResponseStream(); 

       using (var sr = new StreamReader(httpWebResponse)) 
       { 
        responseText = sr.ReadToEnd(); 
       } 
      } 

답변

0

두 가지 종류의 타임 아웃이 있습니다. 클라이언트 시간 초과 및 서버 시간 초과. 당신이 그것으로 확인할 수 있습니다 TIMEDOUT

request.Timeout = Timeout.Infinite; 
request.KeepAlive = true; 

그래서, 당신하는 GetResponse은 결코 :이 같은 일을 시도했습니다.

또는

using (HttpWebResponse response = (HttpWebResponse) request.GetResponse()) 
{ 
var httpWebResponse = response.GetResponseStream(); 

      using (var sr = new StreamReader(httpWebResponse)) 
      { 
       responseText = sr.ReadToEnd(); 
      } 
} 

이 문제를 해결하기 위해이 방법을 사용해보십시오.

+0

아니요, 이것은 도움이되지 않았습니다. 나는 왜 그것이 유럽에서 일하고 미국에서 일하지 않는지 이해하지 못한다. – Turok

관련 문제