-->

获取HttpWebResponse的通知(Get notification of HttpWebRe

2019-10-19 16:13发布

我有从一个网址张贴和读取数据的Windows Phone 8 ComClass。

 public class ComClass
    {
        private string _url = """;
        private  string _postdata = "";
        public Boolean data_received;
        public string data;

        public  ComClass(string url, string data2send)
        {
            _url = url;
            _postdata = data2send;
        }    

        public void Send()
        {
            data_received = false;
            HttpWebRequest request = null;           

            request = (HttpWebRequest)WebRequest.Create(_url);
            request.ContentType = "application/json;charset=UTF-8";
            request.Method = "POST";

            request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
        }

        private void GetRequestStreamCallback(IAsyncResult asyncResult)
        {
            HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;            
            Stream postStream = request.EndGetRequestStream(asyncResult);
            byte[] byteArray = Encoding.UTF8.GetBytes(_postdata.ToString());

            postStream.Write(byteArray, 0, _postdata.Length);
            postStream.Dispose();

           request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
        }

        private void GetResponseCallback(IAsyncResult asynchronousResult)
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

                HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
                Stream streamResponse = response.GetResponseStream();
                StreamReader streamRead = new StreamReader(streamResponse);
                data = streamRead.ReadToEnd();

                data_received = true;

                streamResponse.Dispose();
                streamRead.Dispose();                
                response.Dispose();
            }
            catch (WebException ex)
            {
                data = ex.Message;
                data_received = false;
                //using (StreamReader reader = new StreamReader(ex.Response.GetResponseStream()))
                //{
                //    //Debug.WriteLine("Exception output : " + ex);
                //}
            }
        }
    }

类工作正常。 我的问题是,我想以某种方式得到通知,我有一个响应。 例如

ComClass ccc = null;
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {

                ccc = new ComClass("url", "somedata");

                ccc.Send();

                //while (ccc.data_received == false)
                //{ }

                 string itemdata = ccc.data;
                 //do something with itemdata...
            }
            catch (Exception ee)
            { 

            }
        }

我知道,我必须使用坐等或代表,但我坚持......

文章来源: Get notification of HttpWebResponse