// Cumulocity Subscribe - Request - Response
        public SubscribeResponse[] DeviceCloudSubscribe(SubscribeRequest subscribeRequest, string service_url)
        {
            SubscribeResponse[] subscribeResp = new SubscribeResponse[0];
            try
            {
                HttpWebRequest             request = deviceCloudHttpRequest(service_url);
                DataContractJsonSerializer ser     = new DataContractJsonSerializer(subscribeRequest.GetType());
                MemoryStream ms = new MemoryStream();
                ser.WriteObject(ms, subscribeRequest);
                String       json   = Encoding.UTF8.GetString(ms.ToArray());
                StreamWriter writer = new StreamWriter(request.GetRequestStream());
                ms.Close();
                writer.Write(json);
                writer.Close();

                using (var httpwebResponse = (HttpWebResponse)request.GetResponse())
                {
                    using (var reader = new StreamReader(httpwebResponse.GetResponseStream()))
                    {
                        JavaScriptSerializer js = new JavaScriptSerializer();
                        string responseJsonText = reader.ReadToEnd();
                        subscribeResp = js.Deserialize <SubscribeResponse[]>(responseJsonText);
                        // ==========================
                        ServiceEventSource.Current.ServiceMessage(this, "Subscribe to Cumulocity succeeded - {0}", subscribeResp[0].successful);
                        // ==========================
                        reader.Close();
                    }
                }
                request.Abort();
            }
            catch (Exception e)
            {
                // ==========================
                ServiceEventSource.Current.ServiceMessage(this, "Exception caught - {0} - unknown error during Subscribe request", System.Convert.ToString(e));
                // ==========================
                //System.Diagnostics.Trace.WriteLine("Exception caught" + System.Convert.ToString(e), "Error");
                subscribeResp[0].successful = false;
                subscribeResp[0].error      = "Exeption - unknown error during Subscribe request";
            }

            return(subscribeResp);
        }
        // Cumulocity Subscribe - Request - Response
        public SubscribeResponse[] DeviceCloudSubscribe(SubscribeRequest subscribeRequest, string service_url)
        {
            SubscribeResponse[] subscribeResp = new SubscribeResponse[0];
            try
            {
                HttpWebRequest request = deviceCloudHttpRequest(service_url);
                DataContractJsonSerializer ser = new DataContractJsonSerializer(subscribeRequest.GetType());
                MemoryStream ms = new MemoryStream();
                ser.WriteObject(ms, subscribeRequest);
                String json = Encoding.UTF8.GetString(ms.ToArray());
                StreamWriter writer = new StreamWriter(request.GetRequestStream());
                ms.Close();
                writer.Write(json);
                writer.Close();

                using (var httpwebResponse = (HttpWebResponse)request.GetResponse())
                {
                    using (var reader = new StreamReader(httpwebResponse.GetResponseStream()))
                    {
                        JavaScriptSerializer js = new JavaScriptSerializer();
                        string responseJsonText = reader.ReadToEnd();
                        subscribeResp = js.Deserialize<SubscribeResponse[]>(responseJsonText);
                        // ==========================
                        ServiceEventSource.Current.ServiceMessage(this, "Subscribe to Cumulocity succeeded - {0}", subscribeResp[0].successful);
                        // ==========================
                        reader.Close();
                    }
                }
                request.Abort();
            }
            catch (Exception e)
            {
                // ==========================
                ServiceEventSource.Current.ServiceMessage(this, "Exception caught - {0} - unknown error during Subscribe request", System.Convert.ToString(e));
                // ==========================
                //System.Diagnostics.Trace.WriteLine("Exception caught" + System.Convert.ToString(e), "Error");
                subscribeResp[0].successful = false;
                subscribeResp[0].error = "Exeption - unknown error during Subscribe request";
            }

            return subscribeResp;
        }