HttpWebRequest.GetResponse Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengembalikan respons dari sumber daya Internet.
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
Mengembalikan
Yang WebResponse berisi respons dari sumber daya Internet.
Pengecualian
Aliran sudah digunakan oleh panggilan sebelumnya ke BeginGetResponse(AsyncCallback, Object).
-atau-
TransferEncoding diatur ke nilai dan SendChunked adalah false.
Methodadalah GET atau HEAD, dan ContentLength lebih besar atau sama dengan nol atau SendChunked .true
-atau-
KeepAlive adalah true, AllowWriteStreamBuffering adalah false, ContentLength adalah -1, SendChunked adalah false, dan Method ADALAH POST atau PUT.
-atau-
HttpWebRequest memiliki badan entitas tetapi GetResponse() metode dipanggil tanpa memanggil GetRequestStream() metode .
-atau-
ContentLength lebih besar dari nol, tetapi aplikasi tidak menulis semua data yang dijanjikan.
Validator cache permintaan menunjukkan bahwa respons untuk permintaan ini dapat dilayani dari cache; namun, permintaan ini mencakup data yang akan dikirim ke server. Permintaan yang mengirim data tidak boleh menggunakan cache. Pengecualian ini dapat terjadi jika Anda menggunakan validator cache kustom yang salah diimplementasikan.
Abort() sebelumnya dipanggil.
-atau-
Periode waktu habis untuk permintaan kedaluwarsa.
-atau-
Terjadi kesalahan saat memproses permintaan.
Contoh
Contoh kode berikut mendapatkan respons untuk permintaan.
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.
'...
'
'
Keterangan
Hati
WebRequest, , HttpWebRequestServicePoint, dan WebClient usang, dan Anda tidak boleh menggunakannya untuk pengembangan baru. Gunakan HttpClient sebagai gantinya.
Metode mengembalikan GetResponseWebResponse objek yang berisi respons dari sumber daya Internet. Instans aktual yang HttpWebResponsedikembalikan adalah , dan dapat dijeniskan ke kelas tersebut untuk mengakses properti khusus HTTP.
ProtocolViolationException dilemparkan dalam beberapa kasus ketika properti yang ditetapkan pada HttpWebRequest kelas bertentangan. Pengecualian ini terjadi jika aplikasi mengatur ContentLength properti dan SendChunked properti ke true, lalu mengirim permintaan HTTP GET. Pengecualian ini terjadi jika aplikasi mencoba mengirim potongan ke server yang hanya mendukung protokol HTTP 1.0, di mana ini tidak didukung. Pengecualian ini terjadi jika aplikasi mencoba mengirim data tanpa mengatur ContentLength properti atau SendChunked adalah false ketika buffering dinonaktifkan dan pada koneksi keepalive ( KeepAlive properti adalah true).
Hati
Anda harus memanggil Close metode untuk menutup aliran dan melepaskan koneksi. Kegagalan untuk melakukannya dapat menyebabkan aplikasi Anda kehabisan koneksi.
Saat menggunakan metode POST, Anda harus mendapatkan aliran permintaan, menulis data yang akan diposting, dan menutup aliran. Metode ini memblokir menunggu konten diposting; jika tidak ada set waktu habis dan Anda tidak menyediakan konten, utas panggilan memblokir tanpa batas waktu.
Nota
Beberapa panggilan untuk GetResponse mengembalikan objek respons yang sama; permintaan tidak diterbitkan kembali.
Nota
Aplikasi Anda tidak dapat mencampur metode sinkron dan asinkron untuk permintaan tertentu. Jika Anda memanggil GetRequestStream metode , Anda harus menggunakan GetResponse metode untuk mengambil respons.
Nota
WebException Jika dilemparkan, gunakan Response properti dan Status pengecualian untuk menentukan respons dari server.
Nota
Anggota ini mengeluarkan informasi pelacakan saat Anda mengaktifkan pelacakan jaringan di aplikasi Anda. Untuk informasi selengkapnya, lihat Pelacakan Jaringan di .NET Framework.
Nota
Untuk alasan keamanan, cookie dinonaktifkan secara default. Jika Anda ingin menggunakan cookie, gunakan CookieContainer properti untuk mengaktifkan cookie.