Иметь долго выполняющееся задание, которое возвращает строку после успешного завершения. Это прекрасно работает в почтальоне, но не в 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. Есть идеи, что почтальон делает по-другому? Я не вижу куки, отправленных / полученных от / почтальону.