读取一段http网络文件,返回stream,怎么实现

windynie 2011-04-19 02:03:52
写一个方法,传一个地址,返回stream
例如:
string documentConfigPath = @"http://10.71.144.69/sites/webCDE/CMS/Templates/20110418/document.xml";

通过该方法将返回此文件的stream


应该怎么写啊,那位知道,帮帮忙,谢谢谢谢。
...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
windynie 2011-04-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 niehua24 的回复:]
写一个方法,传一个地址,返回stream
例如:
string documentConfigPath = @"http://10.71.144.69/sites/webCDE/CMS/Templates/20110418/document.xml";

通过该方法将返回此文件的stream


应该怎么写啊,那位知道,帮帮忙,谢谢谢谢。
[/Quote]


我也是这么写的关键问题是,我现在想要 public stream loadXml(String documentConfigPath )
有好的建议没,我现在用的是委托,不想用啊
windynie 2011-04-20
  • 打赏
  • 举报
回复
回3楼朋友,我这边是想同步的,但是我没有实现,
我这个方法是在一个接口里面,实现后,要把得到的stream传回来,然后用这个stream
dui_cky 2011-04-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 niehua24 的回复:]

引用楼主 niehua24 的回复:
写一个方法,传一个地址,返回stream
例如:
string documentConfigPath = @"http://10.71.144.69/sites/webCDE/CMS/Templates/20110418/document.xml";

通过该方法将返回此文件的stream


应该怎么写啊,那位知道,帮帮忙,谢谢谢谢。

……
[/Quote]

silverlight 是使用异步下载的 建议使用异步的,如果同步 可能会卡死的.

lz是希望 public stream loadXml(String documentConfigPath ) 直接返回stream吗? 能不能具体说下有什么特别的要求 ?

其实

void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
//下载完成后给xml赋值
Xelement xml = XElement.Load(System.Xml.XmlReader.Create(e.Result));

}


一样可以完成你的需求,只要lz在 client_OpenReadCompleted 中在使用个委托 使得下载完成后去触发另外一个方法 就能实现。效果应该一样,而且不必一直等待到下载完成。
dui_cky 2011-04-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 niehua24 的回复:]

回3楼朋友,我这边是想同步的,但是我没有实现,
我这个方法是在一个接口里面,实现后,要把得到的stream传回来,然后用这个stream
[/Quote]

那你可以定义一个全局的 stream ,然后再 void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 中赋值。

在使用的地方判断 stream 是否为 null ,如果 为空 则 Thread.sleep一定的时间 , 再次继续判断stream,直到有值为止。

这样是否符合lz的要求呢 ?
dui_cky 2011-04-19
  • 打赏
  • 举报
回复

public void loadXml(String documentConfigPath )
{
WebClient client = new WebClient();
//注册委托 指定下载完成后运行的事件
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);

//读取地址
client.OpenReadAsync(new Uri(documentConfigPath ));
}

void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
//下载完成后给xml赋值
Xelement xml = XElement.Load(System.Xml.XmlReader.Create(e.Result));

}


lz可以根据需要,改成你自己想下载的东西。 其中 xml 为拿到的值。 e.Result 好像就是个stream

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧