Fungsi HttpSendHttpResponse (http.h)

Fungsi HttpSendHttpResponse mengirimkan respons HTTP ke permintaan HTTP yang ditentukan.

Sintaks

HTTPAPI_LINKAGE ULONG HttpSendHttpResponse(
  [in]           HANDLE             RequestQueueHandle,
  [in]           HTTP_REQUEST_ID    RequestId,
  [in]           ULONG              Flags,
  [in]           PHTTP_RESPONSE     HttpResponse,
  [in, optional] PHTTP_CACHE_POLICY CachePolicy,
  [out]          PULONG             BytesSent,
  [in]           PVOID              Reserved1,
  [in]           ULONG              Reserved2,
  [in]           LPOVERLAPPED       Overlapped,
  [in, optional] PHTTP_LOG_DATA     LogData
);

Parameter

[in] RequestQueueHandle

Handel ke antrean permintaan tempat permintaan yang ditentukan diambil. Antrean permintaan dibuat dan handelnya dikembalikan oleh panggilan ke fungsi HttpCreateRequestQueue .

Windows Server 2003 dengan SP1 dan Windows XP dengan SP2: Handel ke antrean permintaan dibuat oleh fungsi HttpCreateHttpHandle .

[in] RequestId

Pengidentifikasi permintaan HTTP yang sesuai dengan respons ini. Nilai ini dikembalikan dalam anggota RequestId dari struktur HTTP_REQUEST dengan panggilan ke fungsi HttpReceiveHttpRequest . Nilai ini tidak dapat HTTP_NULL_ID.

[in] Flags

Parameter ini bisa menjadi kombinasi dari beberapa nilai bendera berikut. Mereka yang saling eksklusif ditandai dengan sesuai.

Bendera Makna
HTTP_SEND_RESPONSE_FLAG_DISCONNECT
Koneksi jaringan harus terputus setelah mengirim respons ini, mengesampingkan fitur koneksi persisten yang terkait dengan versi HTTP yang digunakan.
Hati Menggabungkan HTTP_SEND_RESPONSE_FLAG_DISCONNECT dan HTTP_SEND_RESPONSE_FLAG_MORE_DATA dalam satu panggilan ke fungsi HttpSendHttpResponse menghasilkan hasil yang tidak terdefinisi.
 
HTTP_SEND_RESPONSE_FLAG_MORE_DATA
Data badan entitas tambahan untuk respons ini dikirim oleh aplikasi melalui satu atau beberapa panggilan berikutnya ke HttpSendResponseEntityBody. Panggilan terakhir yang mengirim data badan entitas kemudian mengatur bendera ini ke nol.
Hati Menggabungkan HTTP_SEND_RESPONSE_FLAG_DISCONNECT dan HTTP_SEND_RESPONSE_FLAG_MORE_DATA dalam satu panggilan ke fungsi HttpSendHttpResponse menghasilkan hasil yang tidak terdefinisi.
 
HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA
Bendera ini memungkinkan buffering data dalam kernel berdasarkan per respons.

Ini harus digunakan oleh aplikasi yang melakukan I/O sinkron atau oleh aplikasi yang melakukan I/O asinkron dengan tidak lebih dari satu pengiriman yang luar biasa pada satu waktu.

Aplikasi yang menggunakan I/O asinkron dan yang mungkin memiliki lebih dari satu pengiriman terutang pada satu waktu tidak boleh menggunakan bendera ini.

Ketika bendera ini diatur, bendera ini juga harus digunakan secara konsisten dalam panggilan ke fungsi HttpSendResponseEntityBody .

Windows Server 2003: Bendera ini tidak didukung. Bendera ini baru untuk Windows Server 2003 dengan SP1.

HTTP_SEND_RESPONSE_FLAG_ENABLE_NAGLING
Mengaktifkan algoritma penamaan TCP hanya untuk pengiriman ini.

Windows Server 2003 dengan SP1 dan Windows XP dengan SP2: Bendera ini tidak didukung.

HTTP_SEND_RESPONSE_FLAG_PROCESS_RANGES
Menentukan bahwa untuk permintaan rentang, konten respons lengkap diteruskan dan pemanggil ingin API HTTP memproses rentang dengan tepat.
Catatan Bendera ini hanya didukung untuk respons terhadap permintaan HTTP GET dan menawarkan subset fungsionalitas terbatas. Aplikasi yang memerlukan pemrosesan rentang penuh harus melakukannya dalam mode pengguna dan tidak mengandalkan HTTP.sys. Penggunaannya tidak disarankan.
 
Windows Server 2008 R2 dan Windows 7 atau yang lebih baru.

Catatan Bendera ini didukung.

HTTP_SEND_RESPONSE_FLAG_OPAQUE
Menentukan bahwa permintaan/respons tidak mematuhi HTTP dan semua byte berikutnya harus diperlakukan sebagai badan entitas. Aplikasi menentukan bendera ini ketika menerima permintaan peningkatan Soket Web dan menginformasikan HTTP.sys untuk memperlakukan data koneksi sebagai data buram.

Bendera ini hanya diperbolehkan ketika anggota StatusCodepHttpResponse adalah 101, beralih protokol. HttpSendHttpResponse mengembalikan ERROR_INVALID_PARAMETER untuk semua jenis respons HTTP lainnya jika bendera ini digunakan.

Windows 8 dan yang lebih baru: Bendera ini didukung.

[in] HttpResponse

Penunjuk ke struktur HTTP_RESPONSE yang menentukan respons HTTP.

[in, optional] CachePolicy

Penunjuk ke struktur HTTP_CACHE_POLICY yang digunakan untuk menyimpan respons.

Windows Server 2003 dengan SP1 dan Windows XP dengan SP2: Parameter ini dicadangkan dan harus NULL.

[out] BytesSent

Opsional. Penunjuk ke variabel yang menerima angka, dalam byte, dikirim jika fungsi beroperasi secara sinkron.

Saat melakukan panggilan asinkron menggunakan pOverlapped, atur pBytesSent ke NULL. Jika tidak, ketika pOverlapped diatur ke NULL, pBytesSent harus berisi alamat memori yang valid dan tidak diatur ke NULL.

[in] Reserved1

Parameter ini dicadangkan dan harus NULL.

[in] Reserved2

Parameter ini dicadangkan dan harus nol.

[in] Overlapped

Untuk panggilan asinkron, atur pOverlapped untuk menunjuk ke struktur yang TUMPANG TINDIH ; untuk panggilan sinkron, atur ke NULL.

Panggilan sinkron memblokir hingga semua data respons yang ditentukan dalam parameter pHttpResponse dikirim, sedangkan panggilan asinkron segera mengembalikan ERROR_IO_PENDING dan aplikasi panggilan kemudian menggunakan port penyelesaian GetOverlappedResult atau I/O untuk menentukan kapan operasi selesai. Untuk informasi selengkapnya tentang menggunakan struktur YANG TUMPANG TINDIH untuk sinkronisasi, lihat Sinkronisasi dan Input dan Output yang Tumpang Tindih.

[in, optional] LogData

Penunjuk ke struktur HTTP_LOG_DATA yang digunakan untuk mencatat respons. Teruskan pointer ke struktur HTTP_LOG_FIELDS_DATA dan transmisikan ke PHTTP_LOG_DATA.

Ketahuilah bahwa bahkan ketika pengelogan diaktifkan pada Grup URL, atau sesi server, respons tidak akan dicatat kecuali aplikasi menyediakan struktur data bidang log.

Windows Server 2003 dan Windows XP dengan SP2: Parameter ini dicadangkan dan harus NULL.

Windows Vista dan Windows Server 2008: Parameter ini baru untuk Windows Vista, dan Windows Server 2008

Nilai kembali

Jika fungsi berhasil, fungsi akan mengembalikan NO_ERROR.

Jika fungsi digunakan secara asinkron, nilai pengembalian ERROR_IO_PENDING menunjukkan bahwa permintaan berikutnya belum siap dan diambil nanti melalui mekanisme penyelesaian I/O yang tumpang tindih normal.

Jika fungsi gagal, fungsi akan mengembalikan salah satu kode kesalahan berikut.

Nilai Makna
ERROR_INVALID_PARAMETER
Satu atau beberapa parameter yang disediakan dalam bentuk yang tidak dapat digunakan.
Lainnya
Kode kesalahan sistem yang ditentukan dalam WinError.h.

Keterangan

Fungsi HttpSendHttpResponse digunakan untuk membuat dan mengirim header respons, dan fungsi HttpSendResponseEntityBody dapat digunakan untuk mengirim data badan entitas sesuai kebutuhan.

Jika header panjang konten atau header pengodean transfer tidak disertakan dengan respons, aplikasi harus menunjukkan akhir respons dengan secara eksplisit menutup koneksi dengan menggunakan bendera HTTP_SEND_RESPONSE_DISCONNECT .

Jika aplikasi menentukan header "Server:" dalam respons, menggunakan pengidentifikasi HttpHeaderServer dalam struktur HTTP_KNOWN_HEADER , nilai yang ditentukan ditempatkan sebagai bagian pertama header, diikuti dengan spasi lalu "Microsoft-HTTPAPI/1.0". Jika tidak ada header server yang ditentukan, HttpSendHttpResponse menyediakan "Microsoft-HTTPAPI/1.0" sebagai header server.

Catatan Fungsi HttpSendHttpResponse dan HttpSendResponseEntityBody tidak boleh dipanggil secara bersamaan dari utas yang berbeda pada RequestId yang sama.
 

Persyaratan

   
Klien minimum yang didukung Windows Vista, Windows XP dengan SP2 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header http.h
Pustaka Httpapi.lib
DLL Httpapi.dll

Lihat juga

Fungsi HTTP Server API Versi 1.0

HTTP_RESPONSE

HttpReceiveHttpRequest

HttpReceiveRequestEntityBody

HttpSendResponseEntityBody