Единственный заголовок запроса, необходимый для FORM POST, это 'content-type: x-www-form-urlencoded'.
Кроме того, WebClient сгенерирует исключение для всех кодов состояния HTTP! = 2xx (т. Е. Успех), поэтому с вами все будет в порядке. Вам просто нужно перехватить WebException и посмотреть, есть ли e.Status == WebExceptionStatus.ProtocolError. Если это так, вы можете получить объект HttpWebResponse из объекта Exception (e.Response) и делать с ним все, что захотите.