Получить ответ сервера с помошью 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;
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.308 из 5
Похожие ответы