HttpWebRequest.GetResponse Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí odpověď z internetového prostředku.
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
Návraty
A WebResponse , který obsahuje odpověď z internetového prostředku.
Výjimky
Datový proud je již používán předchozím voláním BeginGetResponse(AsyncCallback, Object).
-nebo-
TransferEncoding je nastavená na hodnotu a SendChunked je false
.
Method je GET nebo HEAD a buď ContentLength je větší nebo roven nule nebo SendChunked je true
.
-nebo-
KeepAlive is true
, AllowWriteStreamBuffering is false
, ContentLength is -1, SendChunked is false
, and Method is POST nebo PUT.
-nebo-
Objekt HttpWebRequest obsahuje tělo entity, GetResponse() ale metoda je volána bez volání GetRequestStream() metody.
-nebo-
Hodnota ContentLength je větší než nula, ale aplikace nezapíše všechna slíbená data.
Validátor mezipaměti požadavků uvedl, že odpověď na tento požadavek může být obsloužena z mezipaměti. Tento požadavek však zahrnuje data, která se mají odeslat na server. Požadavky, které odesílají data, nesmí používat mezipaměť. K této výjimce může dojít, pokud používáte vlastní validátor mezipaměti, který je nesprávně implementován.
Abort() byla dříve volána.
-nebo-
Vypršel časový limit žádosti.
-nebo-
Při zpracování požadavku došlo k chybě.
Příklady
Následující příklad kódu získá odpověď na požadavek.
#using <System.dll>
using namespace System;
using namespace System::Net;
using namespace System::Text;
using namespace System::IO;
// Specify the URL to receive the request.
int main()
{
array<String^>^args = Environment::GetCommandLineArgs();
HttpWebRequest^ request = dynamic_cast<HttpWebRequest^>(WebRequest::Create(args[1]));
// Set some reasonable limits on resources used by this request
request->MaximumAutomaticRedirections = 4;
request->MaximumResponseHeadersLength = 4;
// Set credentials to use for this request.
request->Credentials = CredentialCache::DefaultCredentials;
HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->GetResponse());
Console::WriteLine("Content length is {0}", response->ContentLength);
Console::WriteLine("Content type is {0}", response->ContentType);
// Get the stream associated with the response.
Stream^ receiveStream = response->GetResponseStream();
// Pipes the stream to a higher level stream reader with the required encoding format.
StreamReader^ readStream = gcnew StreamReader(receiveStream, Encoding::UTF8);
Console::WriteLine("Response stream received.");
Console::WriteLine(readStream->ReadToEnd());
response->Close();
readStream->Close();
}
/*
The output from this example will vary depending on the value passed into Main
but will be similar to the following:
Content length is 1542
Content type is text/html; charset=utf-8
Response stream received.
<html>
...
</html>
*/
using System;
using System.Net;
using System.Text;
using System.IO;
public class Test
{
// Specify the URL to receive the request.
public static void Main (string[] args)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(args[0]);
// Set some reasonable limits on resources used by this request
request.MaximumAutomaticRedirections = 4;
request.MaximumResponseHeadersLength = 4;
// Set credentials to use for this request.
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine("Content length is {0}", response.ContentLength);
Console.WriteLine("Content type is {0}", response.ContentType);
// Get the stream associated with the response.
Stream receiveStream = response.GetResponseStream();
// Pipes the stream to a higher level stream reader with the required encoding format.
StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
Console.WriteLine("Response stream received.");
Console.WriteLine(readStream.ReadToEnd());
response.Close();
readStream.Close();
}
}
/*
The output from this example will vary depending on the value passed into Main
but will be similar to the following:
Content length is 1542
Content type is text/html; charset=utf-8
Response stream received.
<html>
...
</html>
*/
Imports System.Net
Imports System.Text
Imports System.IO
Public Class Test
' Specify the URL to receive the request.
Public Shared Sub Main(ByVal args() As String)
Dim request As HttpWebRequest = CType(WebRequest.Create(args(0)), HttpWebRequest)
' Set some reasonable limits on resources used by this request
request.MaximumAutomaticRedirections = 4
request.MaximumResponseHeadersLength = 4
' Set credentials to use for this request.
request.Credentials = CredentialCache.DefaultCredentials
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Console.WriteLine("Content length is {0}", response.ContentLength)
Console.WriteLine("Content type is {0}", response.ContentType)
' Get the stream associated with the response.
Dim receiveStream As Stream = response.GetResponseStream()
' Pipes the stream to a higher level stream reader with the required encoding format.
Dim readStream As New StreamReader(receiveStream, Encoding.UTF8)
Console.WriteLine("Response stream received.")
Console.WriteLine(readStream.ReadToEnd())
response.Close()
readStream.Close()
End Sub
End Class
'
'The output from this example will vary depending on the value passed into Main
'but will be similar to the following:
'
'Content length is 1542
'Content type is text/html; charset=utf-8
'Response stream received.
'...
'
'
Poznámky
Metoda GetResponse vrátí WebResponse objekt, který obsahuje odpověď z internetového prostředku. Skutečná vrácená instance je HttpWebResponse, a může být typecast pro danou třídu pro přístup k vlastnostem specifickým pro HTTP.
V několika případech dojde k vyvolání objektu A ProtocolViolationException , když jsou vlastnosti nastavené na HttpWebRequest třídě v konfliktu. K této výjimce dochází, pokud aplikace nastaví ContentLength vlastnost a SendChunked vlastnost na true
a pak odešle požadavek HTTP GET. K této výjimce dochází, pokud se aplikace pokusí odeslat bloky dat na server, který podporuje pouze protokol HTTP 1.0, kde to není podporováno. K této výjimce dochází v případě, že se aplikace pokusí odeslat data bez nastavení ContentLength vlastnosti nebo SendChunked je false
při ukládání do vyrovnávací paměti zakázaná a u keepalive připojení ( KeepAlive vlastnost je true
)..
Upozornění
Pokud chcete datový proud zavřít a uvolnit připojení, musíte volat Close metodu . Pokud to neuděláte, může dojít k výpadku připojení vaší aplikace.
Při použití metody POST musíte získat stream požadavku, zapsat data, která se mají publikovat, a datový proud zavřít. Tato metoda blokuje čekání na publikování obsahu; Pokud není nastavený žádný časový limit a nezadáte obsah, volající vlákno bude trvale blokováno.
Poznámka
Více volání pro GetResponse vrácení stejného objektu odpovědi; požadavek se znovu nevydá.
Poznámka
Aplikace nemůže kombinovat synchronní a asynchronní metody pro konkrétní požadavek. Pokud voláte metodu GetRequestStream , musíte k načtení odpovědi použít GetResponse metodu .
Poznámka
WebException Pokud je vyvolán, pomocí Response vlastností a Status výjimky určete odpověď ze serveru.
Poznámka
Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.
Poznámka
Z bezpečnostních důvodů jsou soubory cookie ve výchozím nastavení zakázané. Pokud chcete používat soubory cookie, povolte soubory cookie pomocí CookieContainer vlastnosti .
Platí pro
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro