Inheritance: System.Web.Services.Protocols.SoapHttpClientProtocol
        public void RunCommand(string server, string vault, string username, string password, string file, Int32 fileversion, string outputfile, Boolean printerror)
        {
            SecurityService secSrv = new SecurityService();
            secSrv.SecurityHeaderValue = new VaultFileRetrieve.Security.SecurityHeader();
            secSrv.Url = "http://" + server + "/AutodeskDM/Services/SecurityService.asmx";

            try 
            {
                secSrv.SignIn(username, password, vault);
                DocumentService docSrv = new DocumentService();
                docSrv.SecurityHeaderValue = new VaultFileRetrieve.Document.SecurityHeader();
                docSrv.SecurityHeaderValue.UserId = secSrv.SecurityHeaderValue.UserId;
                docSrv.SecurityHeaderValue.Ticket = secSrv.SecurityHeaderValue.Ticket;
                docSrv.Url = "http://" + server + "/AutodeskDM/Services/DocumentService.asmx";
                Folder root = docSrv.GetFolderRoot();
                string filepath = System.IO.Path.GetDirectoryName(file);
                filepath = filepath.Replace("\\", "/");
                Folder filefolder = docSrv.GetFolderByPath(filepath);
                GetFilesInFolder(filefolder, docSrv, file, fileversion, outputfile);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error retrieving file");
                if (printerror)
                {
                    Console.WriteLine(ex.ToString());
                }
                return;
            }
        }
 private void GetFilesInFolder(Folder parentFolder, DocumentService docSvc, string filepath, Int32 fileversion, string outputfile)
 {
     File[] files = docSvc.GetLatestFilesByFolderId(parentFolder.Id, false);
     if (files != null && files.Length > 0)
     {
         foreach (File file in files)
         {
             if (parentFolder.FullName + "/" + file.Name == filepath)
             {
                 for (int vernum = file.VerNum; vernum >= 1; vernum--)
                 {
                     File verFile = docSvc.GetFileByVersion(file.MasterId, vernum);
                     if (vernum == fileversion)
                     {
                         Console.WriteLine(String.Format("{0,12:0,0}", verFile.FileSize) + " " + parentFolder.FullName + "/" + verFile.Name + " (Version " + vernum.ToString() + ")");
                         Console.WriteLine("Writing to " + outputfile);
                         byte[] bytes;
                         for (int counter = 0; counter < outputfile.Length; counter++)
                         {
                             if (outputfile.Substring(counter,1) == "\\")
                             {
                                 try 
                                 {
                                     System.IO.Directory.CreateDirectory(outputfile.Substring(0,counter));
                                 }
                                 catch (Exception ex)
                                 {
                                     Console.WriteLine(ex.ToString());
                                     Console.WriteLine(outputfile.Substring(0, counter));
                                 }
                             }
                         }
                         
                         string fileName = docSvc.DownloadFile(verFile.Id, true, out bytes);
                         System.IO.File.WriteAllBytes(outputfile, bytes);
                     }
                 }
             }
         }
     }
 }