FtpWebRequest

Since version 4 and in version 2009 you may use the .NET framework inside Dynamics AX. The FtpWebRequest class in the System.Net namespace handles FTP communication like upload, download, delete files and retrieve a list of files in a directory, etc.

Upload File
static void uploadTestFile(Args _args) {   System.Object ftpo; System.Object ftpResponse; System.Net.FtpWebRequest request; System.IO.StreamReader reader; System.IO.Stream requestStream; System.Byte[] bytes; System.Net.NetworkCredential credential; System.String xmlContent; System.Text.Encoding utf8;

System.Net.FtpWebResponse response; ;

// Read file reader = new System.IO.StreamReader("C:/test.xml"); utf8 = System.Text.Encoding::get_UTF8; bytes = utf8.GetBytes( reader.ReadToEnd ); reader.Close;

// little workaround to get around the casting in .NET ftpo = System.Net.WebRequest::Create("ftp://ftp.company.com/dir/test.xml"); request = ftpo; credential = new System.Net.NetworkCredential("user","password"); request.set_Credentials(credential); request.set_ContentLength(bytes.get_Length); request.set_Method("STOR");

// "Bypass" a HTTP Proxy (FTP transfer through a proxy causes an exception) // request.set_Proxy( System.Net.GlobalProxySelection::GetEmptyWebProxy );

requestStream = request.GetRequestStream; requestStream.Write(bytes,0,bytes.get_Length); requestStream.Close; ftpResponse = request.GetResponse; response = ftpResponse; info(response.get_StatusDescription); }

Read from FTP
static void readFromFTP(Args _args) {   System.Object ftpo; System.Net.FtpWebRequest request; System.IO.StreamReader reader; System.Net.NetworkCredential credential; System.Net.FtpWebResponse response; System.String text; ;   ftpo = System.Net.WebRequest::Create("ftp://ftpserver.com/dir/myfile.txt"); request = ftpo; credential = new System.Net.NetworkCredential("user","password"); request.set_Credentials(credential);

response = request.GetResponse; reader = new System.IO.StreamReader(response.GetResponseStream); text = reader.ReadToEnd; info(text); }