Возвращение файла CSV из веб-службы REST в виде потока в C # - PullRequest
0 голосов
/ 06 ноября 2018

Я вызываю публичный API REST для получения CSV-файла в моем методе GetStream, который возвращает объект типа Stream.

public Stream GetStream(object args)
        {
    var request = (HttpWebRequest)WebRequest.Create(URL);

                    var response = (HttpWebResponse)request.GetResponse();

                    string responseLine = string.Empty;
                    StreamReader reader = new StreamReader(response.GetResponseStream());
}

Предыдущий код был настроен для возврата XML-документа, который был сериализован из возвращенного CSV. Теперь мне просто нужно вернуть данные CSV.

Я создаю здесь свой объект Stream, который сейчас возвращает XML:

Stream baseStream = new MemoryStream();
                    XmlTextWriter tw = new XmlTextWriter(baseStream, System.Text.Encoding.UTF8);
                    responseXml.WriteTo(tw);
                    tw.Flush();
                    baseStream.Seek(0, SeekOrigin.Begin);
                    return baseStream;

Я не уверен, как просто вернуть данные CSV из ответа в потоке. Этот метод предназначен для адаптера в Biztalk, поэтому CSV будет иметь связанную с ним схему и карту.

1 Ответ

0 голосов
/ 06 ноября 2018

Мне удалось выяснить это, записав данные в поток с помощью StreamWriter, сбросив их в поток и выполнив поиск в начале. Строка результатов содержит данные CSV из ответа. Смотрите код ниже:

 Stream baseStream = new MemoryStream();
                StreamWriter csvWriter = new StreamWriter(baseStream, Encoding.UTF8);
                csvWriter.Write(results);
                csvWriter.Flush();
                baseStream.Seek(0, SeekOrigin.Begin);
                Console.WriteLine(baseStream.Length);
                return baseStream;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...