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

戻り値

FtpWebResponse インスタンスを格納している WebResponse 参照。 このオブジェクトは、要求に対する FTP サーバーの応答を格納しています。

例外

GetResponse() または BeginGetResponse(AsyncCallback, Object) は、このインスタンスに対して既に呼び出されています。

- または -

HTTP プロキシが有効で、DownloadFileListDirectory、または ListDirectoryDetails 以外の FTP コマンドを使用しようとしました。

EnableSsltrue に設定されていますが、サーバーはこの機能をサポートしていません。

- または -

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 は、応答が受信されるまでブロックします。 これを回避するには、 の代わりに GetResponseメソッドと EndGetResponse メソッドをBeginGetResponse呼び出すことで、この操作を非同期的に実行できます。

プロパティが Proxy 直接または構成ファイルで設定されている場合、FTP サーバーとの通信はプロキシを介して行われます。

WebExceptionがスローされた場合は、例外の プロパティと Status プロパティを使用Responseして、サーバーからの応答を確認します。

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

注意

同じ応答オブジェクトを返す GetResponse 複数の呼び出し。要求は再発行されません。

注意 (呼び出し元)

この方法では、ネットワーク トラフィックが生成されます。

適用対象

こちらもご覧ください