Получайте данные в реальном времени из долгоживущего веб-сервиса http - PullRequest
0 голосов
/ 01 марта 2012

У меня есть http долгоживущий веб-сервис. Если у него есть новые данные, он отправит клиенту, используя http GET. Как я могу получать данные в реальном времени от http долгоживущего веб-сервиса с помощью HttpWebRequest c #?

Ответы [ 2 ]

0 голосов
/ 17 июля 2012

Если вы хотите получить данные по почте, сделайте это

   public string GetMessageViaPost(string endPoint, string paramtersJson)
        {
            string responseValue;
            byte[] bytes = Encoding.UTF8.GetBytes(paramtersJson);

            HttpWebRequest request = CreateWebRequest(endPoint, bytes.Length);

            using (var requestStream = request.GetRequestStream())
            {
                requestStream.Write(bytes, 0, bytes.Length);
            }

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    string message = String.Format("POST failed. Received HTTP {0}", response.StatusCode);
                    throw new ApplicationException(message);
                }
                // grab the response  
                using (var responseStream = response.GetResponseStream())
                {
                    using (var reader = new StreamReader(responseStream))
                    {
                        responseValue = reader.ReadToEnd();
                    }
                }
            }

            return responseValue;
        }

        private HttpWebRequest CreateWebRequest(string endPoint, Int32 contentLength)
        {
            var request = (HttpWebRequest)WebRequest.Create(endPoint);

            request.Method = "POST";
            request.ContentLength = contentLength;
            request.ContentType = "application/json";// "application/x-www-form-urlencoded";

            return request;
        }
0 голосов
/ 17 июля 2012

Если вы хотите получить данные, используя Get, вы можете использовать это (ответ синхронный, когда вы используете GetResponse):

 public string GetMessageViaGet(string endPoint)
        {
            HttpWebRequest request = CreateWebRequest(endPoint);

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                var responseValue = string.Empty;

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    string message = String.Format("Request failed. Received HTTP {0}", response.StatusCode);
                    throw new ApplicationException(message);
                }

                // grab the response  
                using (var responseStream = response.GetResponseStream())
                {
                    using (var reader = new StreamReader(responseStream))
                    {
                        responseValue = reader.ReadToEnd();
                    }
                }

                return responseValue;
            }
        }
        private HttpWebRequest CreateWebRequest(string endPoint)
        {
            var request = (HttpWebRequest)WebRequest.Create(endPoint);

            request.Method = "GET";
            request.ContentLength = 0;
            request.ContentType = "text/xml";
            return request;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...