异步的HTTP POST与GET请求例子

Get方法:

private void HttpGet()
        {
            WebClient wc = new WebClient();
            Uri uri = new Uri("http://localhost:3881/Financial.ashx?ticker=NTES&startdate=1-1-2009&enddate=9-2-2010", UriKind.RelativeOrAbsolute);
            wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
            wc.OpenReadAsync(uri);
        }
        private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
            StreamReader read = new StreamReader(e.Result);
            string strXML = read.ReadToEnd();
            XDocument xmlDoc = XDocument.Parse(strXML);
            IEnumerable<TimeSeriesData> myTimeSeries = from item in xmlDoc.Descendants("TimeSeries")
                                                       select new TimeSeriesData()
                                                       {
                                                           open = Convert.ToDouble(item.Element("Open").Value),
                                                           close = Convert.ToDouble(item.Element("Close").Value),
                                                           high = Convert.ToDouble(item.Element("High").Value),
                                                           low = Convert.ToDouble(item.Element("Low").Value),
                                                           adjclose = Convert.ToDouble(item.Element("AdjClose").Value),
                                                           volume = Convert.ToDouble(item.Element("Volume").Value),
                                                           date = Convert.ToDateTime(item.Element("Date").Value)
                                                       };
            TimeSeries.ItemsSource = myTimeSeries;
           
        }

Post方法:

        private void HttpPost()
        {
            Uri uri = new Uri("http://localhost:3881/Financial.ashx");
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.BeginGetRequestStream(new AsyncCallback(RequestProceed),request);
        }


        private void RequestProceed(IAsyncResult asyncResult)
        {
            HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
            StreamWriter postDataWriter = new StreamWriter(request.EndGetRequestStream(asyncResult));
            postDataWriter.Write("ticker=NTES");
            postDataWriter.Write("&startdate=1-1-2009");
            postDataWriter.Write("&enddate=9-2-2010");
            postDataWriter.Close();
            request.BeginGetResponse(new AsyncCallback(ResponesProceed),request);
        }


        private void ResponesProceed(IAsyncResult asyncResult)
        {
            WebRequest request = (HttpWebRequest)asyncResult.AsyncState;
            HttpWebResponse response=(HttpWebResponse)request.EndGetResponse(asyncResult);
            StreamReader responseReader = new StreamReader(response.GetResponseStream());
            string responseString = responseReader.ReadToEnd();
            XDocument xmlDoc = XDocument.Parse(responseString);
            IEnumerable<TimeSeriesData> myTimeSeries = from item in xmlDoc.Descendants("TimeSeries")
                                                       select new TimeSeriesData()
                                                       {
                                                           open = Convert.ToDouble(item.Element("Open").Value),
                                                           close = Convert.ToDouble(item.Element("Close").Value),
                                                           high = Convert.ToDouble(item.Element("High").Value),
                                                           low = Convert.ToDouble(item.Element("Low").Value),
                                                           adjclose = Convert.ToDouble(item.Element("AdjClose").Value),
                                                           volume = Convert.ToDouble(item.Element("Volume").Value),
                                                           date = Convert.ToDateTime(item.Element("Date").Value)
                                                       };
             Dispatcher.BeginInvoke(()=>TimeSeries.ItemsSource=myTimeSeries);
        }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值