Exemple #1
0
        public void BeginGetCustomerServiceData(int id, GetCustomerServiceCallback callback)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(
                new Uri(serverBaseUri, relativeGetCustomerServiceDataURI));

            request.Method = "POST";

            getCustomerServiceCallback = callback;

            request.BeginGetRequestStream(delegate(IAsyncResult result)
            {
                HttpWebRequest webRequest = result.AsyncState as HttpWebRequest;
                webRequest.ContentType    = "text/xml";
                Stream requestStream      = webRequest.EndGetRequestStream(result);
                StreamWriter streamWriter = new StreamWriter(requestStream);

                // Serializa los datos a enviar.
                DataContractSerializer serializer = new DataContractSerializer(typeof(int));

                serializer.WriteObject(streamWriter.BaseStream, id);
                streamWriter.Close();

                // Realizar una llamada asíncrona para obtener la respuesta.
                // Un Callback será invocado sobre un hilo ejecutándose en segundo plano.
                request.BeginGetResponse(new AsyncCallback(EndGetCustomerServiceData), request);
            }
                                          , request);
        }
Exemple #2
0
        public void EndGetCustomerServiceData(System.IAsyncResult result)
        {
            GetCustomerServiceResult callResult = new GetCustomerServiceResult();

            try
            {
                HttpWebRequest  request  = (HttpWebRequest)result.AsyncState;
                HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);

                // Crear la instancia del deserializador.
                DataContractSerializer serializer = new DataContractSerializer(typeof(CustomerServiceDataEntity));

                // Deserializar el modelo de datos.
                CustomerServiceDataEntity deserializedCustomerService = (CustomerServiceDataEntity)serializer.ReadObject(response.GetResponseStream());

                callResult.CustomerService = deserializedCustomerService;
            }
            catch (SerializationException serializationError)
            {
                Debug.WriteLine(serializationError.Message);
            }
            catch (WebException webError)
            {
                Debug.WriteLine(webError.Message);
            }

            // Si hay callback, invocarlo.
            if (getCustomerServiceCallback != null)
            {
                getCustomerServiceCallback(callResult);
                getCustomerServiceCallback = null;
            }
        }