Получить ответ сервера с помошью HttpWebResponse - C#
Формулировка задачи:
Здравствуйте!
Возможно, сказывается то, что уже даже не ночь и мозги не варят, но столкнулся с проблемой.
У меня есть массив
byte[]
в котором лежит текст обычногоHTTP-запроса
. Хост и порт я из этого запроса уже вытянул. Вот подскажите, как мне теперь из этого всего получитьответ
от сервера в видеHttpWebResponse
? Массив byte[] с запросом вHttpWebRequest
не засовывается, а безHttpWebRequest
нельзя получить иHttpWebResponse
. Рассматривал ещё вариант с отправкой данных просто черезSocket
, но в таком случае я тоже не смогу получить ответ вHttpWebResponse
. Благодарю за внимание!Решение задачи: «Получить ответ сервера с помошью HttpWebResponse»
textual
Листинг программы
private byte[] GetRequest(Socket client)
{
try
{
NetworkStream ns = new NetworkStream(client);
StreamReader sr = new StreamReader(ns, Encoding.ASCII);
client.ReceiveTimeout = 10 * 1000;
string header = "";
byte[] arr = null;
int contLen = 0;
using (MemoryStream ms = new MemoryStream())
{
while (!string.IsNullOrEmpty(header = sr.ReadLine()))
{
if (header.ToLowerInvariant().Contains("content-length"))
{
string[] spl = header.Split(new string[] { ": ", ":" }, StringSplitOptions.RemoveEmptyEntries);
int.TryParse(spl[1], out contLen);
}
arr = Encoding.ASCII.GetBytes(header + "\r\n");
ms.Write(arr, 0, arr.Length);
}
arr = Encoding.ASCII.GetBytes("\r\n");
ms.Write(arr, 0, arr.Length);
string tmps = Encoding.ASCII.GetString(ms.ToArray());
int num = 0;
byte[] buffer = new byte[client.ReceiveBufferSize];
// while ((contLen > 0) && ((num = client.Receive(buffer)) > 0))
// {
// ms.Write(buffer, 0, num);
// contLen -= num;
// }
//}
ns = new NetworkStream(client);
while ((num = ns.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, num);
}
byte[] buff = ms.ToArray();
return ms.ToArray();
}
}
catch (Exception ex)
{
Logger.OnLog(ex.Message);
return null;
}
}