Я врезаюсь в стену при попытке прочитать базовые потоки классов HttpWebRequest и HttpWebResponse. Оказывается, это не потоки памяти; они имеют тип ConnectStream. Проблема с этим типом потока в том, что он не поддерживает чтение, запись, поиск, ничего. Каждый раз, когда я пытаюсь что-то сделать с этим типом потока, я получаю неподдерживаемые исключения.
Есть ли способ использовать какой-то другой тип потока вместо ConnectStream, который на самом деле был бы читабельным?
Код:
public class BaseAsmxProxy : SoapHttpClientProtocol
{
protected override System.Xml.XmlReader GetReaderForMessage(SoapClientMessage message, int bufferSize)
{
string responseXml = GetResponseDataFromStream(message.Stream);
return base.GetReaderForMessage(message, bufferSize);
}
private string GetResponseDataFromStream(System.IO.Stream stream)
{
string returnValue = null;
long initialPosition = stream.Position;
stream.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader(stream);
returnValue = reader.ReadToEnd();
stream.Seek(initialPosition, SeekOrigin.Begin);
return returnValue;
}
}
Обратите внимание, что когда я использую SoapExtension (для некоторых других функций), он переключает типы потоков, и я случайно получаю здесь MemoryStream, который на самом деле читаем - что именно то, что мне нужно. Однако в какой-то момент мне придется отключить SoapExtentensions, и вот тут начинаются проблемы: ConnectStream просто не читается.