Metode IWinHttpRequest::SetCredentials
Metode SetCredentials mengatur kredensial yang akan digunakan dengan server HTTP, baik itu server proksi atau server asal.
Sintaks
HRESULT SetCredentials(
[in] BSTR UserName,
[in] BSTR Password,
[in] HTTPREQUEST_SETCREDENTIALS_FLAGS Flags
);
Parameter
-
UserName [in]
-
Menentukan nama pengguna untuk autentikasi.
-
Kata sandi [in]
-
Menentukan kata sandi untuk autentikasi. Parameter ini diabaikan jika bstrUserNameNULL atau hilang.
-
Bendera [in]
-
Menentukan kapan IWinHttpRequest menggunakan kredensial. Bisa menjadi salah satu nilai berikut.
Nilai Makna - HTTPREQUEST_SETCREDENTIALS_FOR_SERVER
Kredensial diteruskan ke server. - HTTPREQUEST_SETCREDENTIALS_FOR_PROXY
Kredensial diteruskan ke proksi.
Menampilkan nilai
Nilai yang dikembalikan S_OK pada keberhasilan atau nilai kesalahan jika tidak.
Keterangan
Metode ini mengembalikan nilai kesalahan jika panggilan ke Buka belum berhasil diselesaikan. Diasumsikan bahwa beberapa ukuran interaksi dengan server proksi atau server asal harus terjadi sebelum pengguna dapat mengatur kredensial untuk sesi tersebut. Selain itu, sampai pengguna mengetahui skema autentikasi mana yang didukung, mereka tidak dapat memformat kredensial.
Catatan
Untuk Windows XP dan Windows 2000, lihat bagian Persyaratan Run-Time di Halaman Mulai WinHTTP.
Untuk mengautentikasi dengan server dan proksi, aplikasi harus memanggil SetCredentials dua kali; pertama dengan parameter Bendera diatur ke HTTPREQUEST_SETCREDENTIALS_FOR_SERVER, dan kedua, dengan parameter Bendera diatur ke HTTPREQUEST_SETCREDENTIALS_FOR_PROXY.
Contoh
Contoh berikut menunjukkan cara membuka koneksi HTTP, mengatur kredensial untuk server, mengirim permintaan HTTP, dan membaca teks respons. Contoh ini harus dijalankan dari prompt perintah.
#include <windows.h>
#include <stdio.h>
#include <objbase.h>
#include "httprequest.h"
#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "oleaut32.lib")
// IID for IWinHttpRequest.
const IID IID_IWinHttpRequest =
{
0x06f29373,
0x5c5a,
0x4b54,
{0xb0, 0x25, 0x6e, 0xf1, 0xbf, 0x8a, 0xbf, 0x0e}
};
int main()
{
// Variable for return value
HRESULT hr;
// Initialize COM.
hr = CoInitialize( NULL );
IWinHttpRequest * pIWinHttpRequest = NULL;
BSTR bstrResponse = NULL;
VARIANT varFalse;
VARIANT varEmpty;
CLSID clsid;
VariantInit(&varFalse);
V_VT(&varFalse) = VT_BOOL;
V_BOOL(&varFalse) = VARIANT_FALSE;
VariantInit(&varEmpty);
V_VT(&varEmpty) = VT_ERROR;
hr = CLSIDFromProgID(L"WinHttp.WinHttpRequest.5.1", &clsid);
if (SUCCEEDED(hr))
{
hr = CoCreateInstance(clsid, NULL,
CLSCTX_INPROC_SERVER,
IID_IWinHttpRequest,
(void **)&pIWinHttpRequest);
}
if (SUCCEEDED(hr))
{ // Open WinHttpRequest.
BSTR bstrMethod = SysAllocString(L"GET");
BSTR bstrUrl = SysAllocString(L"https://microsoft.com");
hr = pIWinHttpRequest->Open(bstrMethod, bstrUrl, varFalse);
SysFreeString(bstrMethod);
SysFreeString(bstrUrl);
}
if (SUCCEEDED(hr))
{ // Set Credentials.
BSTR bstrUserName = SysAllocString(L"User Name");
BSTR bstrPassword = SysAllocString(L"Password");
hr = pIWinHttpRequest->SetCredentials(
bstrUserName,
bstrPassword,
HTTPREQUEST_SETCREDENTIALS_FOR_SERVER);
SysFreeString(bstrUserName);
SysFreeString(bstrPassword);
}
if (SUCCEEDED(hr))
{ // Send Request.
hr = pIWinHttpRequest->Send(varEmpty);
}
if (SUCCEEDED(hr))
{ // Get Response text.
hr = pIWinHttpRequest->get_ResponseText(&bstrResponse);
}
if (SUCCEEDED(hr))
{ // Print response to console.
wprintf(L"%.256s",bstrResponse);
}
// Release memory.
if (pIWinHttpRequest)
pIWinHttpRequest->Release();
if (bstrResponse)
SysFreeString(bstrResponse);
CoUninitialize();
return 0;
}
Contoh pembuatan skrip berikut menunjukkan cara membuka koneksi HTTP, mengatur kredensial untuk server, mengatur kredensial untuk proksi jika digunakan, mengirim permintaan HTTP, dan membaca teks respons.
// HttpRequest SetCredentials flags
HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0;
HTTPREQUEST_SETCREDENTIALS_FOR_PROXY = 1;
// Instantiate a WinHttpRequest object.
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
// Specify the target resource.
var targURL = "https://msdn.microsoft.com/downloads/samples/"+
"internet/winhttp/auth/authenticate.asp";
WinHttpReq.open("GET", targURL, false);
var Done = false;
var LastStatus=0;
do {
// Send a request to the server and wait for a response.
WinHttpReq.send();
// Obtain the status code from the response.
var Status = WinHttpReq.Status;
switch (Status){
// A 200 status indicates that the resource was retrieved.
case 200:
Done = true;
break;
// A 401 status indicates that the server
// requires authentication.
case 401:
WScript.Echo("Requires Server UserName and Password.");
// Specify the target resource.
WinHttpReq.open("GET", targURL, false);
// Set credentials for the server.
WinHttpReq.SetCredentials("User Name", "Password",
HTTPREQUEST_SETCREDENTIALS_FOR_SERVER);
// If the same credentials are requested twice, abort
// the request. For simplicity, this sample does not
// check for a repeated sequence of status codes.
if (LastStatus==401)
Done = true;
break;
// A 407 status indicates that the proxy
// requires authentication.
case 407:
WScript.Echo("Requires Proxy UserName and Password.");
// Specify the target resource.
WinHttpReq.open("GET", targURL, false);
// Set credentials for the proxy.
WinHttpReq.SetCredentials("User Name", "Password",
HTTPREQUEST_SETCREDENTIALS_FOR_PROXY);
// If the same credentials are requested twice, abort
// the request. For simplicity, this sample does not
// check for a repeated sequence of status codes.
if (LastStatus==407)
Done = true;
break;
// Any other status is unexpected.
default:
WScript.Echo("Unexpected Status: "+Status);
Done = true;
break;
}
// Keep track of the last status code.
LastStatus = Status;
} while (!Done);
// Display the results of the request.
WScript.Echo(WinHttpReq.Status + " " + WinHttpReq.StatusText);
WScript.Echo(WinHttpReq.GetAllResponseHeaders());
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows XP, Windows 2000 Professional dengan SP3 [hanya aplikasi desktop] |
Server minimum yang didukung |
Windows Server 2003, Windows 2000 Server dengan SP3 [hanya aplikasi desktop] |
Redistribusi |
WinHTTP 5.0 dan Internet Explorer 5.01 atau yang lebih baru pada Windows XP dan Windows 2000. |
IDL |
|
Pustaka |
|
DLL |
|