HttpWebRequest.EndGetRequestStream 메서드

정의

데이터를 쓰는 데 사용할 Stream 개체에 대한 비동기 요청을 끝냅니다.

오버로드

EndGetRequestStream(IAsyncResult, TransportContext)

데이터를 쓰는 데 사용하는 Stream 개체에 대한 비동기 요청을 종료하고 해당 스트림과 연결된 TransportContext를 출력합니다.

EndGetRequestStream(IAsyncResult)

데이터를 쓰는 데 사용할 Stream 개체에 대한 비동기 요청을 끝냅니다.

EndGetRequestStream(IAsyncResult, TransportContext)

Source:
HttpWebRequest.cs
Source:
HttpWebRequest.cs
Source:
HttpWebRequest.cs

데이터를 쓰는 데 사용하는 Stream 개체에 대한 비동기 요청을 종료하고 해당 스트림과 연결된 TransportContext를 출력합니다.

public:
 System::IO::Stream ^ EndGetRequestStream(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::TransportContext ^ % context);
public System.IO.Stream EndGetRequestStream (IAsyncResult asyncResult, out System.Net.TransportContext? context);
public System.IO.Stream EndGetRequestStream (IAsyncResult asyncResult, out System.Net.TransportContext context);
override this.EndGetRequestStream : IAsyncResult * TransportContext -> System.IO.Stream
Public Function EndGetRequestStream (asyncResult As IAsyncResult, ByRef context As TransportContext) As Stream

매개 변수

asyncResult
IAsyncResult

스트림에 대해 보류된 요청입니다.

context
TransportContext

TransportContext에 대한 Stream입니다.

반환

요청 데이터를 쓰는 데 사용할 Stream입니다.

예외

현재 인스턴스에서 BeginGetRequestStream(AsyncCallback, Object)을 호출한 결과 asyncResult가 반환되지 않은 경우

asyncResult이(가) null인 경우

이 메서드가 asyncResult를 사용하여 이미 호출된 경우

요청이 완료되지 않아서 스트림을 사용할 수 없는 경우

Abort()가 이전에 호출되었습니다.

또는

이 요청을 처리하는 동안 오류가 발생했습니다.

설명

메서드는 EndGetRequestStream 메서드에서 시작한 BeginGetRequestStream 스트림에 대한 비동기 요청을 완료하고 스트림과 연결된 를 TransportContext 출력합니다. 개체가 Stream 반환된 후 메서드를 HttpWebRequest 사용하여 을 사용하여 Stream.Write 데이터를 보낼 수 있습니다.

확장 된 보호를 사용 하 여 통합된 Windows 인증을 사용 하는 일부 애플리케이션에서 사용 하는 전송 계층을 쿼리할 수 해야 HttpWebRequest 기본 TLS 채널에서의 CBT (채널 바인딩 토큰)를 검색 하기 위해. 메서드는 GetRequestStream 요청 본문(POSTPUT 요청)이 있는 HTTP 메서드에 대해 이 정보에 대한 액세스를 제공합니다. 애플리케이션에서 자체 인증을 구현 하는 CBT에 액세스 해야 하는 경우에 필요 합니다.

참고

애플리케이션의 값을 설정 해야 하는 경우는 ContentLength 속성을이 스트림을 검색 하 고 데이터를 기록 하기 전에 수행 해야 합니다.

주의

메서드를 Stream.Close 호출하여 스트림을 닫고 다시 사용할 연결을 해제해야 합니다. 스트림 닫기에 실패 하면 애플리케이션을 연결에서 실행 합니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

추가 정보

적용 대상

EndGetRequestStream(IAsyncResult)

Source:
HttpWebRequest.cs
Source:
HttpWebRequest.cs
Source:
HttpWebRequest.cs

데이터를 쓰는 데 사용할 Stream 개체에 대한 비동기 요청을 끝냅니다.

public:
 override System::IO::Stream ^ EndGetRequestStream(IAsyncResult ^ asyncResult);
public override System.IO.Stream EndGetRequestStream (IAsyncResult asyncResult);
override this.EndGetRequestStream : IAsyncResult -> System.IO.Stream
Public Overrides Function EndGetRequestStream (asyncResult As IAsyncResult) As Stream

매개 변수

asyncResult
IAsyncResult

스트림에 대해 보류된 요청입니다.

반환

요청 데이터를 쓰는 데 사용할 Stream입니다.

예외

asyncResult이(가) null인 경우

요청이 완료되지 않아서 스트림을 사용할 수 없는 경우

현재 인스턴스에서 BeginGetRequestStream(AsyncCallback, Object)을 호출한 결과 asyncResult가 반환되지 않은 경우

이 메서드가 asyncResult를 사용하여 이미 호출된 경우

Abort()가 이전에 호출되었습니다.

또는

이 요청을 처리하는 동안 오류가 발생했습니다.

예제

다음 코드 예제에서는 메서드를 EndGetRequestStream 사용하여 스트림 instance 대한 비동기 요청을 종료합니다.

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::IO;
using namespace System::Text;
using namespace System::Threading;
ref class HttpWebRequestBeginGetRequest
{
public:
   static ManualResetEvent^ allDone = gcnew ManualResetEvent( false );
   static void Main()
   {
      
      // Create a new HttpWebRequest object.
      HttpWebRequest^ request = dynamic_cast<HttpWebRequest^>(WebRequest::Create( "http://www.contoso.com/example.aspx" ));
      
      // Set the ContentType property.
      request->ContentType = "application/x-www-form-urlencoded";
      
      // Set the Method property to 'POST' to post data to the Uri.
      request->Method = "POST";
      
      // Start the asynchronous operation.    
      AsyncCallback^ del = gcnew AsyncCallback(GetRequestStreamCallback);
      request->BeginGetRequestStream( del, request );
      
      // Keep the main thread from continuing while the asynchronous
      // operation completes. A real world application
      // could do something useful such as updating its user interface. 
      allDone->WaitOne();
    }
      

private:
    static void GetRequestStreamCallback(IAsyncResult^ asynchronousResult)
    {
        HttpWebRequest^ request = dynamic_cast<HttpWebRequest^>(asynchronousResult->AsyncState);
        
        // End the operation
        Stream^ postStream = request->EndGetRequestStream(asynchronousResult);

        Console::WriteLine("Please enter the input data to be posted:");
        String^ postData = Console::ReadLine();

        // Convert the string into a byte array.
        array<Byte>^ByteArray = Encoding::UTF8->GetBytes(postData);

        // Write to the request stream.
        postStream->Write(ByteArray, 0, postData->Length);
        postStream->Close();

        // Start the asynchronous operation to get the response
        AsyncCallback^ del = gcnew AsyncCallback(GetResponseCallback);
        request->BeginGetResponse(del, request);
    }

   static void GetResponseCallback(IAsyncResult^ asynchronousResult)
   {
      HttpWebRequest^ request = dynamic_cast<HttpWebRequest^>(asynchronousResult->AsyncState);

      // End the operation
      HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->EndGetResponse(asynchronousResult));
      Stream^ streamResponse = response->GetResponseStream();
      StreamReader^ streamRead = gcnew StreamReader(streamResponse);
      String^ responseString = streamRead->ReadToEnd();
      Console::WriteLine(responseString);
      // Close the stream object
      streamResponse->Close();
      streamRead->Close();

      // Release the HttpWebResponse
      response->Close();
      allDone->Set();
   }
};

void main()
{
   HttpWebRequestBeginGetRequest::Main();
}
using System;
using System.Net;
using System.IO;
using System.Text;
using System.Threading;

class HttpWebRequestBeginGetRequest
{
    private static ManualResetEvent allDone = new ManualResetEvent(false);

    public static void Main(string[] args)
    {


        // Create a new HttpWebRequest object.
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.contoso.com/example.aspx");

        request.ContentType = "application/x-www-form-urlencoded";

        // Set the Method property to 'POST' to post data to the URI.
        request.Method = "POST";

        // start the asynchronous operation
        request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);

        // Keep the main thread from continuing while the asynchronous
        // operation completes. A real world application
        // could do something useful such as updating its user interface.
        allDone.WaitOne();
    }

    private static void GetRequestStreamCallback(IAsyncResult asynchronousResult)
    {
        HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

        // End the operation
        Stream postStream = request.EndGetRequestStream(asynchronousResult);

        Console.WriteLine("Please enter the input data to be posted:");
        string postData = Console.ReadLine();

        // Convert the string into a byte array.
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);

        // Write to the request stream.
        postStream.Write(byteArray, 0, postData.Length);
        postStream.Close();

        // Start the asynchronous operation to get the response
        request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
    }

    private static void GetResponseCallback(IAsyncResult asynchronousResult)
    {
        HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

        // End the operation
        HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
        Stream streamResponse = response.GetResponseStream();
        StreamReader streamRead = new StreamReader(streamResponse);
        string responseString = streamRead.ReadToEnd();
        Console.WriteLine(responseString);
        // Close the stream object
        streamResponse.Close();
        streamRead.Close();

        // Release the HttpWebResponse
        response.Close();
        allDone.Set();
    }
}
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Threading

Class HttpWebRequestBeginGetRequest
    Public Shared allDone As New ManualResetEvent(False)

    Shared Sub Main()


        ' Create a new HttpWebRequest object.
        Dim request As HttpWebRequest = CType(WebRequest.Create("http://www.contoso.com/example.aspx"), _
                 HttpWebRequest)

        ' Set the ContentType property.
        request.ContentType = "application/x-www-form-urlencoded"

        '  Set the Method property to 'POST' to post data to the URI.
        request.Method = "POST"

        ' Start the asynchronous operation.		
        Dim result As IAsyncResult = _
            CType(request.BeginGetRequestStream(AddressOf GetRequestStreamCallback, request), _
            IAsyncResult)

        ' Keep the main thread from continuing while the asynchronous
        ' operation completes. A real world application
        ' could do something useful such as updating its user interface. 
        allDone.WaitOne()
    End Sub

    Private Shared Sub GetRequestStreamCallback(ByVal asynchronousResult As IAsyncResult)
        Dim request As HttpWebRequest = CType(asynchronousResult.AsyncState, HttpWebRequest)
        
        ' End the operation
        Dim postStream As Stream = request.EndGetRequestStream(asynchronousResult)
        Console.WriteLine("Please enter the input data to be posted:")
        Dim postData As [String] = Console.ReadLine()
        
        '  Convert the string into byte array.
        Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)

        ' Write to the stream.
        postStream.Write(byteArray, 0, postData.Length)
        postStream.Close()

        ' Start the asynchronous operation to get the response
        Dim result As IAsyncResult = _
            CType(request.BeginGetResponse(AddressOf GetResponseCallback, request), _
            IAsyncResult)
    End Sub

    Private Shared Sub GetResponseCallback(ByVal asynchronousResult As IAsyncResult)
        Dim request As HttpWebRequest = CType(asynchronousResult.AsyncState, HttpWebRequest)
        
        '  Get the response.
        Dim response As HttpWebResponse = CType(request.EndGetResponse(asynchronousResult), _
           HttpWebResponse)
        
        Dim streamResponse As Stream = response.GetResponseStream()
        Dim streamRead As New StreamReader(streamResponse)
        Dim responseString As String = streamRead.ReadToEnd()
        
        Console.WriteLine(responseString)
        
        ' Close Stream object.
        streamResponse.Close()
        streamRead.Close()

        ' Release the HttpWebResponse.
        allDone.Set()
        response.Close()
    End Sub
            
End Class

설명

메서드는 EndGetRequestStream 메서드에서 시작한 스트림에 대한 비동기 요청을 완료합니다 BeginGetRequestStream . 개체가 Stream 반환된 후 메서드를 HttpWebRequest 사용하여 을 사용하여 Stream.Write 데이터를 보낼 수 있습니다.

참고

스트림에 데이터를 쓰기 전에 속성 값을 ContentLength 설정해야 합니다.

주의

메서드를 Stream.Close 호출하여 스트림을 닫고 다시 사용할 연결을 해제해야 합니다. 스트림 닫기에 실패 하면 애플리케이션을 연결에서 실행 합니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

적용 대상