/// <summary>
        /// Sends the request and sets the parsed response
        /// </summary>
        /// <returns>The HashTable response.</returns>
        /// <param name="rq">HTTP.Request rq.</param>
        /// <param name="callback">Method to call on complete</param>
        /// <param name="errorCallback">Method to call on error</param>
        private void GetResponse(HTTP.Request rq, Complete callback, Error errorCallback)
        {
            ResponseHeaders = new List<string> ();

            try {
                rq.Send ((request) => {
                    if (this.DebugOutput) {
                        Debug.Log (rq.InfoString (true));
                    }

                    if (200 != request.response.status) {
                        errorCallback (request.response.status + " Error: " + request.response.ToString ());
                        return;
                    }

                    ResponseHeaders = request.response.GetHeaders ();
                    bool success = false;
                    Hashtable rs = (Hashtable)JSON.JsonDecode (request.response.Text, ref success);

                    if (!success || rs.Count == 0) {
                        errorCallback (request.response.Text);
                        return;
                    } else {
                        callback (rs);
                    }
                });
            } catch (System.Net.Sockets.SocketException e) {
                errorCallback ("Connection error: " + e.Message);
            } catch (System.Exception e) {
                errorCallback ("General error: " + e.Message);
            }
        }