FtpWebRequest.GetResponse 方法

定義

傳回 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 已啟用,但您嘗試使用 DownloadFileListDirectoryListDirectoryDetails 以外的 FTP 命令。

EnableSsl 設為 true,但伺服器不支援這項功能。

-或-

Timeout 已指定且已經逾時。

範例

下列程式碼範例示範如何將檔案複製到要求的資料流程,以及傳送將資料附加至伺服器的要求。 範例會呼叫 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 封鎖直到收到回應為止。 若要避免這種情況,您可以呼叫 BeginGetResponseEndGetResponse 方法來取代 GetResponse ,以非同步方式執行這項作業。

Proxy如果已設定 屬性,則直接或在組態檔中,會透過 Proxy 與 FTP 伺服器的通訊。

WebException如果擲回 ,請使用 Response 例外狀況的 和 Status 屬性來判斷伺服器的回應。

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱.NET Framework中的網路追蹤

注意

多個呼叫以 GetResponse 傳回相同的回應物件;不會重新發出要求。

給呼叫者的注意事項

此方法會產生網路流量。

適用於

另請參閱