使用SSL加密的FtpWebRequest举例
using System;
using System.IO;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Uri serverUri = new Uri("ftp://xxx.xxx.xxx.xxx");
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
request.Credentials = new NetworkCredential("username", "password", "");
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
//下面4行代码用于支持显示SSL(explicit SSL),.NET2.0中的FtpWebRequest不支持
//隐式SSL(implicit SSL)。如果不用SSL,注释掉它们即可。
request.EnableSsl = true;
ServicePointManager.ServerCertificateValidationCallback =
delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{ return true; };
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = null;
StreamReader readStream = null;
try
{
responseStream = response.GetResponseStream();
readStream = new StreamReader(responseStream, System.Text.Encoding.UTF8);
if (readStream != null)
Console.WriteLine(readStream.ReadToEnd());
}
finally
{
if (readStream != null)
readStream.Close();
if (response != null)
response.Close();
}
Console.ReadLine();
}
}
}
using System.IO;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Uri serverUri = new Uri("ftp://xxx.xxx.xxx.xxx");
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
request.Credentials = new NetworkCredential("username", "password", "");
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
//下面4行代码用于支持显示SSL(explicit SSL),.NET2.0中的FtpWebRequest不支持
//隐式SSL(implicit SSL)。如果不用SSL,注释掉它们即可。
request.EnableSsl = true;
ServicePointManager.ServerCertificateValidationCallback =
delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{ return true; };
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = null;
StreamReader readStream = null;
try
{
responseStream = response.GetResponseStream();
readStream = new StreamReader(responseStream, System.Text.Encoding.UTF8);
if (readStream != null)
Console.WriteLine(readStream.ReadToEnd());
}
finally
{
if (readStream != null)
readStream.Close();
if (response != null)
response.Close();
}
Console.ReadLine();
}
}
}