从REST Web服务以C#流形式返回CSV文件

时间:2018-11-06 11:06:45

标签: c# rest csv http stream

我正在调用公共REST API来获取我的GetStream方法中的CSV文件,该方法返回一个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文档,该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;

我不确定如何从Stream中的响应中简单地返回CSV数据。该方法用于Biztalk中的适配器,因此CSV将具有与其关联的架构和地图。

1 个答案:

答案 0 :(得分:0)

我设法通过使用StreamWriter将数据写入流,将其刷新到Stream并返回到开始的方式来弄清楚。 resulsts字符串包含响应中的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;