Как узнать ping ( время отклика ) для любого URL , class Ping не подходит так как время отклика покажет для ****.com к примеру, а вот для ****.com/about уже не будет показывать
Asked
Active
Viewed 166 times
1 Answers
3
class GetAsyncUrl
{
private readonly HttpClient _client;
public GetAsyncUrl()
{
_client = new HttpClient();
_client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36");
}
public async Task showAsyncTime(string url)
{
var sw = new Stopwatch();
sw.Restart();
await _client.GetStringAsync(url);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
}
}
hekeemje
- 352
-
3Зачем
HttpRequestMessage? В данном случае он бесполезен, достаточно простого.GetAsync(...);. Также я надеюсь,HttpClientвы не каждый раз создаете? Помните, он должен быть один, на все приложение! – EvgeniyZ Feb 06 '22 at 01:02 -
-
Вот это хороший код, но я бы для надежности вычитывал контент, типа
.GetStringAsync(url)вместоGetAsync. – aepot Feb 06 '22 at 08:09 -
Если этот метод надо вызывать несколько раз, то лучше
sw.Restart();вместоsw.Start();– aepot Feb 06 '22 at 08:34 -
-
@aepot я видел вы отправляли правильное использование метода ? не могли бы показать ? а то вот пытаюсь его использовать с коллекцией ссылок url в foreach и что то проблемы возникают, хотя при одиночном отлично работает – hekeemje Feb 06 '22 at 11:38
-
@aepot ещё проблема оказалась в том что забыл указать "_client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36");" весь день ломал голову что не так, оказалось вот в чём была)) – hekeemje Feb 06 '22 at 14:15
-
@hekeemje кстати эту строчку вы можете в любой момент вытащить из своего браузера, откройте инструменты разработчика, вкладака Сеть, обновите страницу и посмотрите в любой запрос, там будет эта строчка в заголовках запроса. – aepot Feb 06 '22 at 14:19
-
@aepot вижу да, какой материал стоить почитать чтобы понять лучше всё это ? – hekeemje Feb 06 '22 at 14:36
-
-
@aepot у меня есть куча URL и мне надо их загнать в этот метод , для~100 URL довольно таки не быстро получу результат , хотел использовать lock чтобы обработать все URL быстро , но понял что lock нельзя использовать с await, есть ли какое то решение этого чтобы быстро обработать все URL этим методом ? – hekeemje Feb 06 '22 at 15:35
-
/, что для/about, так как это один и тот же сервер. А вот время обработки запроса может быть разным, плюс время передачи данных. Что именно вам требуется? – aepot Feb 05 '22 at 23:44HttpWebRequestзасуньте это ископаемое времен динозавров туда, где взяли. У вас естьHttpClientи мой прошлый ответ с ним. – aepot Feb 06 '22 at 00:12