1

サービスにリクエストを送信し、レスポンスを取得しています。サービスは正常に動作し、問題なくオブジェクトを逆シリアル化しています。

以下は私のコードの例です。問題は、結果オブジェクトが最後に null であることです。参照を失う理由がわかりません。適切な解決策は何ですか?

        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!
4

1 に答える 1

0

MarcinJuraszek が示唆したように、適切な方法は、コールバックを作成し、そこで結果を処理することです。

于 2012-05-01T16:44:55.693 に答える