/// <summary>
        /// Do Get Http request
        /// </summary>
        /// <param name="url">Url to call</param>
        /// <param name="callback">Client Callback function</param>
        /// <returns>HttpWebRequest</returns>
        protected IAsyncResult DoGet<T>(string url, Action<T> callback)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);

            var requestState = new GetRequestState<T>();
            requestState.Request = request;
            requestState.Action = callback;
            request.Headers["Authorization"] = "Basic " + this._authorizationToken;

            return request.BeginGetResponse(new AsyncCallback(GetResponseCallback<T>), requestState);
        }
        /// <summary>
        /// Do Post Http request
        /// </summary>
        /// <param name="url">Url to call</param>
        /// <param name="verb">POST/PUT/DELETE</param>
        /// <param name="callback">Client Callback function</param>
        /// <returns>HttpWebRequest</returns>
        protected IAsyncResult DoAction<T>(string url, string verb, Action<T> callback)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Method = verb;
            request.ContentType = "application/json;charset=utf-8";
            request.Headers["Authorization"] = "Basic " + this._authorizationToken;

            var requestState = new GetRequestState<T>();
            requestState.Request = request;
            requestState.Action = callback;

            return request.BeginGetRequestStream(new AsyncCallback(BeginRequestCallback<T>), requestState);
        }