从http长期存在的web服务获取实时数据

问题描述:

我有一个http长期存在的web服务。如果它有新的数据,它将使用http GET推送到客户端。我如何使用HttpWebRequest c#从http长寿Web服务接收实时数据?从http长期存在的web服务获取实时数据

如果你想使用的数据获取,你可以(在使用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; 
     } 

,做到这一点

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; 
     }