FtpWebRequest.GetResponse 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回 FTP 伺服器回應。
public:
override System::Net::WebResponse ^ GetResponse();
public override System.Net.WebResponse GetResponse ();
override this.GetResponse : unit -> System.Net.WebResponse
Public Overrides Function GetResponse () As WebResponse
傳回
WebResponse 參考,包含 FtpWebResponse 執行個體。 這個物件包含 FTP 伺服器對要求的回應。
例外狀況
針對這個執行個體,已經呼叫 GetResponse() 或 BeginGetResponse(AsyncCallback, Object)。
-或-
HTTP Proxy 已啟用,但您嘗試使用 DownloadFile、ListDirectory 或 ListDirectoryDetails 以外的 FTP 命令。
範例
下列程式代碼範例示範如何將檔案複製到要求的數據流,以及傳送將數據附加至伺服器的要求。 範例會呼叫 GetResponse 以傳送要求並封鎖,直到伺服器傳回響應為止。
static bool AppendFileOnServer( String^ fileName, Uri^ serverUri )
{
// The URI described by serverUri should use the ftp:// scheme.
// It contains the name of the file on the server.
// Example: ftp://contoso.com/someFile.txt.
// The fileName parameter identifies the file containing
// the data to be appended to the file on the server.
if ( serverUri->Scheme != Uri::UriSchemeFtp )
{
return false;
}
// Get the object used to communicate with the server.
FtpWebRequest^ request = dynamic_cast<FtpWebRequest^>(WebRequest::Create( serverUri ));
request->Method = WebRequestMethods::Ftp::AppendFile;
StreamReader^ sourceStream = gcnew StreamReader( fileName );
array<Byte>^fileContents = Encoding::UTF8->GetBytes( sourceStream->ReadToEnd() );
sourceStream->Close();
request->ContentLength = fileContents->Length;
// This example assumes the FTP site uses anonymous logon.
request->Credentials = gcnew NetworkCredential( "anonymous","janeDoe@contoso.com" );
Stream^ requestStream = request->GetRequestStream();
requestStream->Write( fileContents, 0, fileContents->Length );
requestStream->Close();
FtpWebResponse^ response = dynamic_cast<FtpWebResponse^>(request->GetResponse());
Console::WriteLine( "Append status: {0}", response->StatusDescription );
response->Close();
return true;
}
public static bool AppendFileOnServer(string fileName, Uri serverUri)
{
// The URI described by serverUri should use the ftp:// scheme.
// It contains the name of the file on the server.
// Example: ftp://contoso.com/someFile.txt.
// The fileName parameter identifies the file containing
// the data to be appended to the file on the server.
if (serverUri.Scheme != Uri.UriSchemeFtp)
{
return false;
}
// Get the object used to communicate with the server.
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
request.Method = WebRequestMethods.Ftp.AppendFile;
StreamReader sourceStream = new StreamReader(fileName);
byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
// This example assumes the FTP site uses anonymous logon.
request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse) request.GetResponse();
Console.WriteLine("Append status: {0}",response.StatusDescription);
response.Close();
return true;
}
備註
若要存取 FTP 特定屬性,您必須將 WebResponse 此方法 FtpWebResponse傳回的物件轉換成 。
GetResponse 會導致建立控件連接,而且也可能建立數據連線。 GetResponse 封鎖直到收到回應為止。 若要避免這種情況,您可以呼叫 BeginGetResponse 和 EndGetResponse 方法來取代 GetResponse,以異步方式執行這項作業。
Proxy如果已設定 屬性,則直接或在組態檔中,會透過 Proxy 與 FTP 伺服器的通訊。
WebException如果擲回 ,請使用Response例外狀況的 和 Status 屬性來判斷伺服器的回應。
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
注意
多個呼叫以 GetResponse 傳回相同的回應物件;不會重新發出要求。
給呼叫者的注意事項
此方法會產生網路流量。