public String Execute(String path, String query)
        {
            try
            {

                WebRequest request= WebRequest.Create (BASE_URL + path);
                request.ContentType = "application/json";
                request.Method = "POST";
                request.Credentials = new NetworkCredential (USERNAME, PASSWORD);
                request.Headers["X-AppGlu-Environment"] = "staging";

                RequestState requestState = new RequestState(request, query);

                request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), requestState);

                allDone.WaitOne();
                allDone.Dispose();

                requestState.response.Dispose();
                return requestState.content ;

            }
            catch(WebException e)
            {
                Debug.WriteLine("WebException raised!");
                Debug.WriteLine("\n{0}",e.Message);
                Debug.WriteLine("\n{0}",e.Status);
            }
            catch(Exception e)
            {
                Debug.WriteLine("Exception raised!");
                Debug.WriteLine("Source : " + e.Source);
                Debug.WriteLine("Message : " + e.Message);
            }

            return null;
        }
        private void ReadCallBack(RequestState requestState)
        {
            try
            {
                Stream responseStream = requestState.responseStream;
                int read = responseStream.Read( requestState.bufferRead,0, BUFFER_SIZE);
                // Read the contents of the HTML page and then print to the console.
                if (read > 0)
                {
                    requestState.requestData.Append(Encoding.UTF8.GetString(requestState.bufferRead, 0, read));
                    ReadCallBack(requestState);
                }
                else
                {
                    if(requestState.requestData.Length>1)
                    {
                        string stringContent = requestState.requestData.ToString();
                        requestState.content = stringContent;

                    }

                    responseStream.Dispose();
                    allDone.Set();
                }
            }
            catch(WebException e)
            {
                Debug.WriteLine("WebException raised!");
                Debug.WriteLine("\n{0}",e.Message);
                Debug.WriteLine("\n{0}",e.Status);
            }
            catch(Exception e)
            {
                Debug.WriteLine("Exception raised!");
                Debug.WriteLine("Source : {0}" , e.Source);
                Debug.WriteLine("Message : {0}" , e.Message);
            }
        }