【发布时间】:2011-09-01 04:55:57
【问题描述】:
我需要在 Silverlight 库中实现一个方法,该方法通过 httpwebrequest 调用(非 wcf-)服务,获取响应,然后填充一个对象并返回它。
因为这是 Silverlight,响应是异步返回的,所以我无法确定该对象应填充到何处以及应如何返回。
这是我目前的代码:
public MyObject GetMyObject
{
HttpWebRequest req = WebRequest.Create(MyUri) as HttpWebRequest;
req.Method = "GET";
req.Accept = "application/json";
req.BeginGetResponse((cb) =>
{
HttpWebRequest rq = cb.AsyncState as HttpWebRequest;
HttpWebResponse resp = rq.EndGetResponse(cb) as HttpWebResponse;
string result;
using (StreamReader reader = new StreamReader(resp.GetResponseStream()))
{
result = reader.ReadToEnd();
reader.Close();
}
}, req);
}
我认为我可以在执行 reader.ReadToEnd() 之后立即填充该对象,但我实际上在哪里返回它?我不能在回调函数中返回它,但是如果我在 GetMyObject() 结束时返回它,则不能保证从异步回调开始填充该对象。
提前致谢!
【问题讨论】:
标签: silverlight httpwebrequest