Я работаю над клиентом для REST API.Сервер возвращает ответы 4xx как само собой разумеющееся.В данный момент я использую HttpWebRequest / HttpWebResponse для совершения звонков.Проблема в том, что HttpWebRequest создает исключение для кодов 4xx (и 5xx).Я ловлю исключение и затем (обычно) отправляю другой запрос на основе данных в сообщении 4xx (например, попробуйте POST, затем MERGE в случае ошибки).
Это работает, но каждый раз повторное подключение TCP / HTTP стоит дорого.Я хочу получить поток ответа или объект, который содержит данные ответа, но не выдает исключение, что позволяет мне сделать еще один запрос на соединение (через keep-alive),Это должно снизить нагрузку на соединение и повысить производительность.
Один из способов, которые я рассмотрел, - это непосредственное использование TcpClient, но это головная боль, поскольку мне приходится писать код для поддержки фрагментированных данных, кодировок, прокси и т. Д. Я надеюсь избежать этого.
Есть ли способ предотвратить исключения WebException с помощью HTTP-клиента System.Net?Если нет, есть ли другие варианты (надеюсь, с открытым исходным кодом)?Любые предложения приветствуются.