 import mx.rpc.AbstractService;
 import mx.rpc.AsyncRequest;
 import mx.rpc.AsyncToken;
+import mx.utils.URLUtil;
 
 use namespace mx_internal;
 

                    throw new ArgumentError("HTTPMultiService operation called with " + argumentNames.length + " argumentNames and " + args.length + " number of parameters.  When argumentNames is specified, it must match the number of arguments passed to the invocation");
                else
                {
                    for (var i:int = 0; i < argumentNames.length; i++)
                        params[argumentNames[i]] = args[i];
                }
            }
        }

    }

    /**
     * The rootURL is used to compute the URL for an HTTP service operation when the
     * a relative URL is specified for the operation.  The directory name of the
     * rootURL is prepended to any relative URLs for the operation.  It is typically
     * more convenient to set the baseURL since baseURL specifies the directory name
     * directly whereas rootURL specifies the name of a file whose directory name is
     * prepended.  If neither rootURL nor baseURL are set explicitly, the directory name
     * of the .swf file is prepended to relative paths.
     */
    override public function get rootURL():String
    {
        if (_rootURL == null)
        {
            var useRootURL:String = _multiService.baseURL;
            if (useRootURL != null && useRootURL.length > 0)
            {
                if (useRootURL.charAt(useRootURL.length - 1) != '/')
                    useRootURL = useRootURL + "/";

                // If this is relative to the 
                if (useRootURL.charAt(0) == "/")
                    useRootURL = URLUtil.getFullURL(super.rootURL, useRootURL);
                return useRootURL;
            }
            else
                return super.rootURL; // defaults to SWF's URL
