Вы можете использовать классы System.Net, такие как HttpWebRequest и HttpWebResponse, для чтения и записи непосредственно в соединение HTTP.
Вот базовый (не собранные, не скомпилированные, не проверяющий ошибки, сильно упрощенный) пример. Может быть не на 100% правильно, но, по крайней мере, даст вам представление о том, как это работает:
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create(url);
req.ContentLength = content.Length;
req.Method = "POST";
req.GetRequestStream().Write(Encoding.ASCII.GetBytes(content), 0, content.Length);
HttpWebResponse resp = (HttpWebResponse) req.getResponse();
//Read resp.GetResponseStream() and do something with it...
Этот подход хорошо работает. Но есть вероятность, что все, что вам нужно сделать, может быть достигнуто путем наследования существующих прокси-классов и переопределения членов, которые должны работать по-разному. Этот тип вещей лучше всего подходит для тех случаев, когда у вас нет другого выбора, что не часто встречается в моем опыте.