Bagikan melalui


HttpWebRequest.GetResponse Metode

Definisi

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

WebResponse yang berisi respons dari sumber daya Internet.

Pengecualian

Aliran sudah digunakan oleh panggilan sebelumnya ke BeginGetResponse(AsyncCallback, Object).

-atau-

TransferEncoding diatur ke nilai dan SendChunkedfalse.

Method GET atau HEAD, dan ContentLength lebih besar atau sama dengan nol atau SendChunkedtrue.

-atau-

KeepAlive true, AllowWriteStreamBufferingfalse, ContentLength -1, SendChunkedfalse, dan Method POST atau PUT.

-atau-

HttpWebRequest memiliki badan entitas tetapi metode GetResponse() dipanggil tanpa memanggil metode GetRequestStream().

-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.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.
'...
'
'

Keterangan

Hati

WebRequest, HttpWebRequest, ServicePoint, dan WebClient usang, dan Anda tidak boleh menggunakannya untuk pengembangan baru. Gunakan HttpClient sebagai gantinya.

Metode GetResponse mengembalikan objek WebResponse yang berisi respons dari sumber daya Internet. Instans aktual yang dikembalikan adalah HttpWebResponse, dan dapat dijeniskan ke kelas tersebut untuk mengakses properti khusus HTTP.

ProtocolViolationException dilemparkan dalam beberapa kasus ketika properti yang diatur pada kelas HttpWebRequest bertentangan. Pengecualian ini terjadi jika aplikasi mengatur properti ContentLength dan properti SendChunked 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 properti ContentLength atau SendChunkedfalse saat buffering dinonaktifkan dan pada koneksi keepalive (properti KeepAlivetrue).

Hati

Anda harus memanggil metode Close untuk menutup aliran dan merilis 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 ke 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 metode GetRequestStream, Anda harus menggunakan metode GetResponse untuk mengambil respons.

Nota

Jika WebException dilemparkan, gunakan properti Response 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 properti CookieContainer untuk mengaktifkan cookie.

Berlaku untuk

Lihat juga

  • Timeout
  • Elemen DefaultProxy (Pengaturan Jaringan)