Bagikan melalui


Fungsi WinHttpQueryHeadersEx (winhttp.h)

Mengambil informasi header yang terkait dengan permintaan HTTP; menawarkan cara untuk mengambil nama header dan string nilai yang diurai.

Sintaks

WINHTTPAPI DWORD WinHttpQueryHeadersEx(
  HINTERNET                hRequest,
  DWORD                    dwInfoLevel,
  ULONGLONG                ullFlags,
  UINT                     uiCodePage,
  PDWORD                   pdwIndex,
  PWINHTTP_HEADER_NAME     pHeaderName,
  PVOID                    pBuffer,
  PDWORD                   pdwBufferLength,
  PWINHTTP_EXTENDED_HEADER *ppHeaders,
  PDWORD                   pdwHeadersCount
);

Parameter

hRequest

Ketik: _In_ HINTERNET

Handel permintaan dikembalikan oleh WinHttpOpenRequest. Panggilan WinHttpReceiveResponse untuk handel ini harus telah selesai sebelum memanggil WinHttpQueryHeadersEx. Jika Anda mengkueri trailer, maka panggilan WinHttpReadData untuk handel ini harus mengembalikan 0 byte yang dibaca sebelum memanggil WinHttpQueryHeadersEx.

dwInfoLevel

Ketik: _In_ DWORD

Nilai tipe DWORD yang menentukan kombinasi bendera atribut dan pengubah yang tercantum dalam topik Bendera info kueri . Atribut dan bendera pengubah ini menunjukkan informasi yang diminta, dan cara memformatnya.

Catatan

Bendera berikut mengembalikan ERROR_INVALID_PARAMETER jika digunakan: WINHTTP_QUERY_VERSION, WINHTTP_QUERY_STATUS_CODE, WINHTTP_QUERY_STATUS_TEXT, WINHTTP_QUERY_FLAG_NUMBER, WINHTTP_QUERY_FLAG_NUMBER64, WINHTTP_QUERY_FLAG_SYSTEMTIME, dan WINHTTP_QUERY_RAW_HEADERS_CRLF.

Bendera WINHTTP_QUERY_EX_ALL_HEADERS mengembalikan semua header.

Jika Anda tidak mengkueri semua header, maka Anda dapat meneruskan bendera yang sesuai dengan header tertentu yang diketahui, atau Anda dapat meneruskan WINHTTP_QUERY_CUSTOM bersama dengan string untuk nama header di parameter pHeaderName .

Meneruskan WINHTTP_QUERY_FLAG_WIRE_ENCODING mengembalikan header dalam format di mana header dikirim melalui kabel (Anda harus mengakses/mengatur anggota psz*dari WINHTTP_EXTENDED_HEADER dan WINHTTP_HEADER_NAME). Jika Anda tidak mengatur bendera pengodean kawat, perilaku defaultnya adalah mengembalikan header dalam format Unicode (Anda harus mengakses/mengatur anggota pwsz* dari WINHTTP_EXTENDED_HEADER dan WINHTTP_HEADER_NAME).

ullFlags

Jenis: _In_ ULONGLONG

Dicadangkan. Atur ke 0.

uiCodePage

Ketik: _In_ UINT

Halaman kode yang digunakan untuk konversi Unicode. Anda harus meneruskan 0 untuk perilaku default (CP_ACP), atau saat menggunakan WINHTTP_QUERY_FLAG_WIRE_ENCODING. Tidak ada validasi yang dilakukan untuk parameter ini.

pdwIndex

Jenis: _Inout_opt_ PDWORD

Alamat indeks berbasis nol yang digunakan untuk menghitung beberapa header dengan nama yang sama. Saat memanggil fungsi, parameter ini adalah indeks header yang ditentukan untuk dikembalikan. Ketika fungsi kembali, parameter ini adalah indeks header berikutnya. Teruskan NULL untuk mengakses instans pertama header tertentu.

pHeaderName

Jenis: PWINHTTP_HEADER_NAME _Inout_opt_

Alamat struktur WINHTTP_HEADER_NAME .

Atur pHeaderName ke NULL saat mengambil semua header. Jika parameter ini bukan NULL, dan Anda meneruskan WINHTTP_QUERY_CUSTOM dengan dwInfoLevel, maka WinHttpQueryHeadersEx hanya akan mengambil header yang ditentukan oleh parameter ini. Jika Anda meneruskan WINHTTP_QUERY_FLAG_WIRE_ENCODING dengan dwInfoLevel, maka Anda harus menggunakan anggota pszName (jika bendera tidak diatur, maka gunakan anggota pwszName ).

pBuffer

Jenis: _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) LPVOID

Buffer yang disediakan penelepon untuk menyimpan penunjuk header dan header yang diurai. Jika parameter ini NULL atau terlalu kecil, maka WinHttpQueryHeadersEx mengembalikan ERROR_INSUFFICIENT_BUFFER, dan parameter pdwBufferLength berisi ukuran buffer yang diperlukan dalam byte.

pdwBufferLength

Jenis: _Inout_ PDWORD

Panjang buffer yang disediakan pemanggil. Jika pBufferNULL atau terlalu kecil, maka WinHttpQueryHeadersEx menulis ukuran buffer yang diperlukan dalam byte ke parameter ini.

ppHeaders

Jenis: PWINHTTP_EXTENDED_HEADER _Out_writes_opt_(*pdwHeadersCount)*

Handel ke array WINHTTP_EXTENDED_HEADER untuk mengakses nama/nilai header yang diurai. Anda harus meneruskan alamat penunjuk WINHTTP_EXTENDED_HEADER yang diinisialisasi ke NULL. Setelah selesai, Anda harus mengakses parameter pszName/pszValue jika menggunakan WINHTTP_QUERY_FLAG_WIRE_ENCODING, dan pwszName/pwszValue sebaliknya.

pdwHeadersCount

Jenis: _Out_ PDWORD

Jumlah header yang dikembalikan. Anda tidak boleh mencoba mengakses di luar ppHeaders[cHeaders - 1], karena itu di luar batas array.

Nilai kembali

Kode status yang menunjukkan hasil operasi. Di antara kode kesalahan yang dikembalikan adalah sebagai berikut.

Kode Kesalahan Deskripsi
ERROR_WINHTTP_HEADER_NOT_FOUND
Header yang diminta tidak dapat ditemukan.
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
Operasi yang diminta tidak dapat dilakukan karena handel yang diberikan tidak dalam keadaan yang benar.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Jenis handel yang disediakan salah untuk operasi ini.
ERROR_WINHTTP_INTERNAL_ERROR
Terjadi kesalah internal.
ERROR_NOT_ENOUGH_MEMORY
Memori tidak cukup tersedia untuk menyelesaikan operasi yang diminta. (Kode galat Windows)

Keterangan

WinHttpQueryHeadersEx dibangun berdasarkan fungsionalitas WinHttpQueryHeaders. WinHttpQueryHeaders memungkinkan Anda mengkueri header permintaan atau respons (atau ekor respons) dalam bentuk string, angka (DWORD), atau tanda waktu (SYSTEMTIME). Mengkueri untuk semua header mengembalikan satu string berseri dengan karakter CRLF atau NULL yang memisahkan header yang berbeda. Misalnya, "Name1: value1\r\nName2: value2\r\n\r\n". Atau "Name1: value1\0Name2: value2\0\0". Pemisah ganda digunakan untuk menunjukkan akhir string.

WinHttpQueryHeadersEx memberi Anda cara untuk mengambil nama header dan string nilai yang diurai.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10 Build 20348
Server minimum yang didukung Windows 10 Build 20348
Target Platform Windows
Header winhttp.h
Pustaka Winhttp.lib
DLL Winhttp.dll