我正在调用公共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将具有与其关联的架构和地图。
答案 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;