【发布时间】:2012-04-29 15:15:41
【问题描述】:
我正在向服务发出请求并得到响应。服务工作正常,我反序列化一个对象没有问题。
以下是我的代码示例。问题是结果对象最后为空。我不知道为什么我会失去参考。什么是正确的解决方案?
HttpWebRequest hwrq = (HttpWebRequest)WebRequest.Create("http://service.svc/Login");
hwrq.ContentType = "application/x-www-form-urlencoded; encoding='utf-8'";
hwrq.Accept = "text/xml";
hwrq.Method = "POST";
Users result = null; // object initializaiton
hwrq.BeginGetRequestStream(ar =>
{
var requestStream = hwrq.EndGetRequestStream(ar);
using (var sw = new StreamWriter(requestStream, System.Text.Encoding.UTF8))
{
sw.Write("Username Password");
sw.Close();
}
hwrq.BeginGetResponse(a =>
{
var response = hwrq.EndGetResponse(a);
var responseStream = response.GetResponseStream();
using (var sr = new StreamReader(responseStream))
{
returnedXML = sr.ReadToEnd();
XmlSerializer xds = new XmlSerializer(typeof(Users));
byte[] byteArray = Encoding.UTF8.GetBytes(returnedXML);
MemoryStream stream = new MemoryStream(byteArray);
result = (Users)xds.Deserialize(stream); // object is correct
}
responseStream.Close();
response.Close();
}, null);
}, null);
return result; // object is null!
【问题讨论】:
-
return语句在BeginGetResponse回调被触发之前执行,因此返回为空,这并没有错和异常。 -
如果不是在方法的末尾,我应该在代码的哪个位置返回我的对象?
-
你不应该返回这个对象。您应该改用某种回调。
-
这对我来说是新事物。谢谢你的建议。
标签: windows-phone-7 asynchronous httpwebrequest httpwebresponse