Длительный веб-запрос http работает от почтальона, но curl зависает навсегда - PullRequest
0 голосов
/ 08 марта 2020

Иметь долго выполняющееся задание, которое возвращает строку после успешного завершения. Это прекрасно работает в почтальоне, но не в cURL.

Запрос направляется на F5 -> NGINX -> WebServer. https://server.com/seconds. Это тестовый URL, ожидающий истечения времени и возвращающий строку.

Когда я использую секунд на 300 (https://server.com/300) или меньше, все отлично работает с обоих cURL, C# клиентское приложение с использованием HttpWebRequest и почтальона. Но если я укажу 400 секунд, то он будет успешно работать только в почтальоне, но не в клиенте cURL / c#.

Пробная копия вставляет точную команду cURL из PostMan, но завиток просто зависает.

curl --location --request GET 'https: /// 400' \ --header 'Content-Type: application / json' \ --header 'Соединение: keep-alive'

Пробовал так же используя клиент HTTPWebRequest. Поведение этого клиента очень похоже на cURL.

        var httpWebRequest = WebRequest.Create(new Uri($"https://<server>/{seconds}")) as HttpWebRequest;
        httpWebRequest.KeepAlive = true;
        httpWebRequest.ReadWriteTimeout = 500000;
        httpWebRequest.Timeout = 500000;
        httpWebRequest.Method = WebRequestMethods.Http.Get;
        httpWebRequest.ContentType = "application/json; charset=UTF-8";
        httpWebRequest.Accept = "*/*";
        httpWebRequest.AllowAutoRedirect = true;
        httpWebRequest.Headers.Add( HttpRequestHeader.CacheControl, "no-cache");
        httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");            
        httpWebRequest.ContinueTimeout = 500000;

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            string jsonResponse = streamReader.ReadToEnd();
            Console.WriteLine("Received response for " + seconds);
            Console.WriteLine(jsonResponse);
        }

PostMan отлично работает с задержкой 400 с, но ни клиентом cURL, ни клиентом HttpWebRequest. Есть идеи, что почтальон делает по-другому? Я не вижу куки, отправленных / полученных от / почтальону.

...