HttpWebRequest.EndGetRequestStream Methode

Definitie

Hiermee beëindigt u een asynchrone aanvraag voor een Stream object dat moet worden gebruikt om gegevens te schrijven.

Overloads

Name Description
EndGetRequestStream(IAsyncResult, TransportContext)

Hiermee beëindigt u een asynchrone aanvraag voor een Stream object dat moet worden gebruikt om gegevens te schrijven en wordt de TransportContext uitvoer uitgevoerd die aan de stream is gekoppeld.

EndGetRequestStream(IAsyncResult)

Hiermee beëindigt u een asynchrone aanvraag voor een Stream object dat moet worden gebruikt om gegevens te schrijven.

EndGetRequestStream(IAsyncResult, TransportContext)

Hiermee beëindigt u een asynchrone aanvraag voor een Stream object dat moet worden gebruikt om gegevens te schrijven en wordt de TransportContext uitvoer uitgevoerd die aan de stream is gekoppeld.

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);
override this.EndGetRequestStream : IAsyncResult * TransportContext -> System.IO.Stream
Public Function EndGetRequestStream (asyncResult As IAsyncResult, ByRef context As TransportContext) As Stream

Parameters

asyncResult
IAsyncResult

De aanvraag in behandeling voor een stream.

Retouren

A Stream voor het schrijven van aanvraaggegevens.

Uitzonderingen

asyncResult is niet geretourneerd door het huidige exemplaar van een aanroep naar BeginGetRequestStream(AsyncCallback, Object).

asyncResult is null.

Deze methode werd eerder aangeroepen met behulp van asyncResult.

De aanvraag is niet voltooid en er is geen stream beschikbaar.

Abort() werd eerder gebeld.

– of –

Er is een fout opgetreden tijdens het verwerken van de aanvraag.

Opmerkingen

Caution

WebRequest, HttpWebRequest, ServicePointen WebClient zijn verouderd en u moet ze niet gebruiken voor nieuwe ontwikkeling. Gebruik in plaats daarvan HttpClient.

De EndGetRequestStream methode voltooit een asynchrone aanvraag voor een stream die is gestart door de BeginGetRequestStream methode en voert de TransportContext gekoppelde stroom uit. Nadat het Stream object is geretourneerd, kunt u gegevens verzenden met de HttpWebRequest methode Stream.Write .

Sommige toepassingen die gebruikmaken van geïntegreerde Windows authentication met uitgebreide beveiliging, moeten mogelijk een query kunnen uitvoeren op de transportlaag die wordt gebruikt door HttpWebRequest om het token voor kanaalbinding (CBT) op te halen uit het onderliggende TLS-kanaal. De GetRequestStream methode biedt toegang tot deze informatie voor HTTP-methoden met een aanvraagbody (POST en PUT aanvragen). Dit is alleen nodig als de toepassing zijn eigen verificatie implementeert en toegang nodig heeft tot de CBT.

Note

  • Als u de waarde van de ContentLength eigenschap moet instellen voordat u gegevens naar de stream schrijft.
  • U moet de Stream.Close methode aanroepen om de stream te sluiten en de verbinding vrij te geven voor hergebruik. Als de stream niet kan worden gesloten, kan uw toepassing geen verbindingen meer hebben.
  • Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in the .NET Framework voor meer informatie.

Zie ook

Van toepassing op

EndGetRequestStream(IAsyncResult)

Hiermee beëindigt u een asynchrone aanvraag voor een Stream object dat moet worden gebruikt om gegevens te schrijven.

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

Parameters

asyncResult
IAsyncResult

De aanvraag in behandeling voor een stream.

Retouren

A Stream voor het schrijven van aanvraaggegevens.

Uitzonderingen

asyncResult is null.

De aanvraag is niet voltooid en er is geen stream beschikbaar.

asyncResult is niet geretourneerd door het huidige exemplaar van een aanroep naar BeginGetRequestStream(AsyncCallback, Object).

Deze methode werd eerder aangeroepen met behulp van asyncResult.

Abort() werd eerder gebeld.

– of –

Er is een fout opgetreden tijdens het verwerken van de aanvraag.

Voorbeelden

In het volgende codevoorbeeld wordt de EndGetRequestStream methode gebruikt om een asynchrone aanvraag voor een stream-exemplaar te beëindigen.

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

Opmerkingen

Caution

WebRequest, HttpWebRequest, ServicePointen WebClient zijn verouderd en u moet ze niet gebruiken voor nieuwe ontwikkeling. Gebruik in plaats daarvan HttpClient.

De EndGetRequestStream methode voltooit een asynchrone aanvraag voor een stream die is gestart door de BeginGetRequestStream methode. Nadat het Stream object is geretourneerd, kunt u gegevens verzenden met de HttpWebRequest methode Stream.Write .

Note

  • U moet de waarde van de ContentLength eigenschap instellen voordat u gegevens naar de stream schrijft.
  • U moet de Stream.Close methode aanroepen om de stream te sluiten en de verbinding vrij te geven voor hergebruik. Als de stream niet kan worden gesloten, kan uw toepassing geen verbindingen meer hebben.
  • Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in the .NET Framework voor meer informatie.

Van toepassing op