0

Извините, мой плохой английский. Я использую HttpWebRequest каждые 10 секунд. Но когда-нибудь, ответ ждет очень долгое время. И после 10 секунд, следующий процесс приближается. Таким образом, запросы складываются. Из-за мер, предпринятых компанией в штаб-квартире, я запрещен, потому что предыдущее соединение не закрылось. Я задал свойства запроса, такие как Timeout, ContinueTimeout, ReadWriteTimeout, но результат не изменился. Фактически, он попадает в Исключение. Но когда я смотрю «Charles Proxy», запрос все еще ждет ответа. Но я должен каким-то образом остановить это. Я делюсь своими кодами и фотографией Чарльза. Спасибо за ваши ответы. С наилучшими пожеланиями.HttpWebRequest - Запрос завершения

Still Wait Response.

 string jsondata = ""; 
     const string url = "https://website.com"; 

     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 
     NameValueCollection header_items = GetHeaders(); 
     req.Headers.Add(header_items); 
     req.Method = "POST"; 
     req.Host = "website.com"; 
     req.Accept = "application/json, text/plain, */*"; 
     req.ContentType = "application/json;charset=utf-8"; 
     req.KeepAlive = false; 
     req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)"; 
     req.Referer = "https://website.com"; 
     req.AllowAutoRedirect = false; 
     req.ContinueTimeout = 5000; 
     req.ReadWriteTimeout = 5000; 
     req.Timeout = 5000; 
     req.ContentLength = 0; 
     ServicePointManager.Expect100Continue = true; 
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11; 
     ServicePointManager.DefaultConnectionLimit = 500; 
     ServicePointManager.DnsRefreshTimeout = 0; 
     ServicePointManager.MaxServicePointIdleTime = 5000; 
     ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); 
     try 
     { 
      using (HttpWebResponse response = (HttpWebResponse)req.GetResponse()) 
      { 
       using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) 
       { 
        jsondata = reader.ReadToEnd(); 
        reader.Close(); 
       } 
       response.Close(); 
      } 
      if (jsondata.Length > 200) 
      { 
       //Do Something 
      } 
     } 
     catch (WebException ex) 
     { 
      req.Abort(); 
      //Do Something 
     } 
     catch (Exception ex) 
     { 
      req.Abort(); 
      //Do Something 
     } 

ответ

0

Попробуйте настройки параметров прокси-сервера для вашего запроса. Много раз, глядя на прокси-сервер принимает слишком журнал для HttpWebRequest:

req.Proxy = GetSystemWebProxy(); 

Взгляните на это также: https://en.code-bude.net/2013/01/21/3-things-you-should-know-to-speed-up-httpwebrequest/

+0

Я изучил и применил предмет, который вы дали, но ничего не изменилось. –

 Смежные вопросы

  • Нет связанных вопросов^_^