Реализация собственного простого HTTP-клиента с использованием Socket не так уж и сложна.
Просто используйте TcpClient ().
Для самого протокола перейдите к парадигме подключения к запросу. Типичный запрос GET будет выглядеть следующим образом:
GET /url HTTP/1.1
Host: <hostname-of-server>
Connection: close
Для самого кода (из памяти)
TcpClient client = new TcpClient();
IPEndPoint target = ... // get an endpoint for the target using DNS class
client.Connect(target);
using(NetworkStream stream = client.GetStream())
{
// send the request.
string request = "GET /url HTTP/1.1\r\nConnection: close\r\n\r\n";
stream.Write(Encoding.ASCII.GetBytes(request));
// then drain the stream to get the server response
}
Обратите внимание, что вам нужно будет обернуть этот код простым классом, который обеспечивает HTTPWebRequest как семантика.