Fungsi WsRequestReply (webservices.h)

Digunakan untuk mengirim pesan permintaan dan menerima pesan balasan yang berkorelasi.

Sintaks

HRESULT WsRequestReply(
  [in]           WS_CHANNEL                   *channel,
  [in]           WS_MESSAGE                   *requestMessage,
  [in]           const WS_MESSAGE_DESCRIPTION *requestMessageDescription,
  [in]           WS_WRITE_OPTION              writeOption,
                 const void                   *requestBodyValue,
  [in]           ULONG                        requestBodyValueSize,
  [in]           WS_MESSAGE                   *replyMessage,
  [in]           const WS_MESSAGE_DESCRIPTION *replyMessageDescription,
  [in]           WS_READ_OPTION               readOption,
  [in, optional] WS_HEAP                      *heap,
                 void                         *value,
  [in]           ULONG                        valueSize,
  [in, optional] const WS_ASYNC_CONTEXT       *asyncContext,
  [in, optional] WS_ERROR                     *error
);

Parameter

[in] channel

Saluran untuk melakukan operasi balasan permintaan.

[in] requestMessage

Objek pesan yang digunakan untuk mengirim permintaan.

Objek pesan harus dalam WS_MESSAGE_STATE_EMPTY atau WS_MESSAGE_STATE_INITIALIZED.

[in] requestMessageDescription

Bidang tindakan WS_MESSAGE_DESCRIPTION digunakan sebagai header tindakan untuk pesan permintaan. Bidang ini mungkin NULL jika tidak ada tindakan yang diperlukan.

Bidang bodyElementDescription dari WS_MESSAGE_DESCRIPTION digunakan untuk menserialisasikan isi pesan permintaan. Bidang ini mungkin NULL jika tidak ada elemen isi yang diinginkan. Lihat WsWriteBody untuk informasi tentang bagaimana tubuh diserialisasikan sesuai dengan bodyElementDescription.

[in] writeOption

Apakah elemen isi diperlukan, dan bagaimana nilai dialokasikan. Lihat WS_WRITE_OPTION untuk informasi selengkapnya.

requestBodyValue

Penunjuk ke nilai untuk diserialisasikan dalam isi objek permintaan.

[in] requestBodyValueSize

Ukuran nilai permintaan yang diserialisasikan, dalam byte.

[in] replyMessage

Objek pesan yang digunakan untuk menerima balasan.

Objek pesan harus dalam WS_MESSAGE_STATE_EMPTY.

[in] replyMessageDescription

Bidang tindakan WS_MESSAGE_DESCRIPTION digunakan untuk memverifikasi header tindakan dari pesan balasan yang diterima. Bidang ini mungkin NULL jika tidak ada tindakan yang diperlukan. Jika NULL, header tindakan dari pesan yang diterima diabaikan jika ada.

Bidang bodyElementDescription dari WS_MESSAGE_DESCRIPTION digunakan untuk mendeserialisasi isi pesan balasan. Bidang ini mungkin NULL jika tidak ada elemen isi yang diinginkan. Lihat WsReadBody untuk informasi tentang bagaimana tubuh dideserialisasi sesuai dengan bodyElementDescription.

[in] readOption

Apakah elemen isi balasan diperlukan, dan cara mengalokasikan nilai. Untuk informasi selengkapnya, lihat WS_READ_OPTION dan WsReadBody.

[in, optional] heap

Timbunan yang digunakan untuk mengalokasikan nilai isi balasan yang dideserialisasi. Jika timbunan tidak diperlukan untuk jenis yang diberikan, maka parameter ini bisa NULL.

value

Tempat menyimpan nilai isi yang dideserialisasi.

Interpretasi parameter ini tergantung pada WS_READ_OPTION.

Jika bodyElementDescription dari WS_MESSAGE_DESCRIPTION balasan adalah NULL, maka parameter ini tidak disentuh. Dalam hal ini, parameter tidak perlu ditentukan.

[in] valueSize

Interpretasi parameter ini tergantung pada WS_READ_OPTION.

[in, optional] asyncContext

Informasi tentang cara memanggil fungsi secara asinkron, atau NULL jika memanggil secara sinkron.

[in, optional] error

Menentukan di mana informasi kesalahan tambahan harus disimpan jika fungsi gagal.

Mengembalikan nilai

Fungsi ini dapat mengembalikan salah satu nilai ini.

Menampilkan kode Deskripsi
WS_E_ENDPOINT_FAULT_RECEIVED
Pesan balasan berisi kesalahan. Kesalahan dapat diekstrak dari WS_ERROR menggunakan WsGetErrorProperty.
WS_S_ASYNC
Operasi asinkron masih tertunda.
WS_E_OPERATION_ABORTED
Operasi dibatalkan.
WS_E_INVALID_OPERATION
Operasi tidak diperbolehkan karena status objek saat ini.
WS_E_ENDPOINT_NOT_FOUND
Titik akhir jarak jauh tidak ada atau tidak dapat ditemukan.
WS_E_ENDPOINT_ACCESS_DENIED
Akses ditolak oleh titik akhir jarak jauh.
WS_E_ENDPOINT_DISCONNECTED
Koneksi dengan titik akhir jarak jauh dihentikan.
WS_E_ENDPOINT_FAILURE
Titik akhir jarak jauh tidak dapat memproses permintaan.
WS_E_ENDPOINT_NOT_AVAILABLE
Titik akhir jarak jauh saat ini tidak dalam layanan di lokasi ini.
WS_E_ENDPOINT_TOO_BUSY
Titik akhir jarak jauh tidak dapat memproses permintaan karena kelebihan beban.
WS_E_ENDPOINT_UNREACHABLE
Titik akhir jarak jauh tidak dapat dijangkau.
WS_E_INVALID_ENDPOINT_URL
URL alamat titik akhir tidak valid.
WS_E_INVALID_FORMAT
Data input tidak dalam format yang diharapkan atau tidak memiliki nilai yang diharapkan.
WS_E_OPERATION_TIMED_OUT
Operasi tidak selesai dalam waktu yang dialokasikan.
WS_E_PROXY_ACCESS_DENIED
Akses ditolak oleh server proksi HTTP.
WS_E_PROXY_FAILURE
Server proksi HTTP tidak dapat memproses permintaan.
WS_E_QUOTA_EXCEEDED
Kuota terlampaui.
WS_E_SECURITY_VERIFICATION_FAILURE
Verifikasi keamanan tidak berhasil untuk data yang diterima.
WS_E_SECURITY_SYSTEM_FAILURE
Operasi keamanan gagal dalam kerangka kerja Windows Web Services.
WS_E_SECURITY_TOKEN_EXPIRED
Token keamanan ditolak oleh server karena telah kedaluwarsa.
WS_E_PROXY_REQUIRES_BASIC_AUTH
Server proksi HTTP memerlukan skema autentikasi HTTP 'dasar'.
WS_E_PROXY_REQUIRES_DIGEST_AUTH
Server proksi HTTP memerlukan skema autentikasi HTTP 'digest'.
WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH
Server proksi HTTP memerlukan skema autentikasi HTTP 'negosiasi'.
WS_E_PROXY_REQUIRES_NTLM_AUTH
Server proksi HTTP memerlukan skema autentikasi HTTP 'NTLM'.
WS_E_SERVER_REQUIRES_BASIC_AUTH
Titik akhir jarak jauh memerlukan skema autentikasi HTTP 'dasar'.
WS_E_SERVER_REQUIRES_DIGEST_AUTH
Titik akhir jarak jauh memerlukan skema autentikasi HTTP 'digest'.
WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH
Titik akhir jarak jauh memerlukan skema autentikasi HTTP 'negosiasi'.
WS_E_SERVER_REQUIRES_NTLM_AUTH
Titik akhir jarak jauh memerlukan skema autentikasi HTTP 'NTLM'.
CERT_E_EXPIRED
Sertifikat yang diperlukan tidak dalam periode validitasnya ketika memverifikasi terhadap jam sistem saat ini atau tanda waktu dalam file yang ditandatangani.
CERT_E_CN_NO_MATCH
Nama CN sertifikat tidak cocok dengan nilai yang diteruskan.
CERT_E_UNTRUSTEDROOT
Rantai sertifikat diproses, tetapi diakhiri dalam sertifikat akar yang tidak dipercaya oleh penyedia kepercayaan.
CERT_E_WRONG_USAGE
Sertifikat tidak valid untuk penggunaan yang diminta.
CRYPT_E_REVOCATION_OFFLINE
Fungsi pencabutan tidak dapat memeriksa pencabutan karena server pencabutan sedang offline.
E_OUTOFMEMORY
Kehabisan memori.
E_INVALIDARG
Satu atau beberapa argumen tidak valid.
Kesalahan Lainnya
Fungsi ini dapat mengembalikan kesalahan lain yang tidak tercantum di atas.

Keterangan

Pesan berkorelasi sesuai dengan WS_ADDRESSING_VERSION. Lihat Gambaran Umum Lapisan Saluran untuk informasi selengkapnya tentang menghubungkan pesan balasan permintaan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 R2 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header webservices.h
Pustaka WebServices.lib
DLL WebServices.dll