HttpWebRequest.EndGetRequestStream Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.
- context
- TransportContext
De TransportContext voor de 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.
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
- TransportContext
- GetChannelBinding(ChannelBindingKind)
- System.Security.Authentication.ExtendedProtection
- ChannelBinding
- Geïntegreerde Windows-verificatie met uitgebreide beveiliging
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.
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.