IWinHttpRequest::SetProxy, méthode
La méthode SetProxy définit les informations du serveur proxy.
Syntaxe
HRESULT SetProxy(
[in] HTTPREQUEST_PROXY_SETTING ProxySetting,
[in, optional] VARIANT ProxyServer,
[in, optional] VARIANT BypassList
);
Paramètres
-
ProxySetting [in]
-
Indicateurs qui contrôlent cette méthode. Il peut s’agir de l’une des valeurs suivantes.
Valeur Signification - HTTPREQUEST_PROXYSETTING_DEFAULT
Paramètre de proxy par défaut. Équivalent à HTTPREQUEST_PROXYSETTING_PRECONFIG. - HTTPREQUEST_PROXYSETTING_PRECONFIG
Indique que les paramètres de proxy doivent être obtenus à partir du Registre. Cela suppose que Proxycfg.exe a été exécuté. Si Proxycfg.exe n’a pas été exécuté et que HTTPREQUEST_PROXYSETTING_PRECONFIG est spécifié, le comportement équivaut à HTTPREQUEST_PROXYSETTING_DIRECT. - HTTPREQUEST_PROXYSETTING_DIRECT
Indique que tous les serveurs HTTP et HTTPS doivent être accessibles directement. Utilisez cette commande s’il n’y a pas de serveur proxy. - HTTPREQUEST_PROXYSETTING_PROXY
Lorsque HTTPREQUEST_PROXYSETTING_PROXY est spécifié, varProxyServer doit être défini sur une chaîne de serveur proxy et varBypassList doit être défini sur une chaîne de liste de contournement de domaine. Cette configuration de proxy s’applique uniquement à la instance actuelle de l’objet WinHttpRequest. -
ProxyServer [in, facultatif]
-
Définissez sur une chaîne de serveur proxy lorsque ProxySetting est égal à HTTPREQUEST_PROXYSETTING_PROXY.
-
BypassList [in, facultatif]
-
Définissez sur une chaîne de liste de contournement de domaine lorsque ProxySetting est égal à HTTPREQUEST_PROXYSETTING_PROXY.
Valeur retournée
La valeur de retour est S_OK en cas de réussite ou une valeur d’erreur dans le cas contraire.
Notes
Permet à l’application appelante de spécifier l’utilisation des informations de proxy par défaut (configurées par l’outil de configuration de proxy) ou de remplacer Proxycfg.exe. Cette méthode doit être appelée avant d’appeler la méthode Send . Si cette méthode est appelée après la méthode Send , elle n’a aucun effet.
IWinHttpRequest transmet ces paramètres à Microsoft Windows HTTP Services (WinHTTP).
Notes
Pour Windows XP et Windows 2000, consultez la section Conditions requises pour l’exécution de la page de démarrage WinHTTP.
Exemples
L’exemple suivant montre comment définir les paramètres de proxy pour un serveur proxy particulier, ouvrir une connexion HTTP, envoyer une requête HTTP et lire le texte de réponse. Cet exemple doit être exécuté à partir d’une invite de commandes. Ces paramètres de proxy fonctionnent uniquement si vous disposez d’un serveur proxy nommé « proxy_server » qui utilise le port 80 et que votre ordinateur peut contourner le serveur proxy lorsque le nom d’hôte se termine par « .microsoft.com ».
#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;
VARIANT varProxy;
VARIANT varUrl;
CLSID clsid;
VariantInit(&varFalse);
V_VT(&varFalse) = VT_BOOL;
V_BOOL(&varFalse) = VARIANT_FALSE;
VariantInit(&varEmpty);
V_VT(&varEmpty) = VT_ERROR;
VariantInit(&varProxy);
VariantInit(&varUrl);
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))
{ // Specify proxy and URL.
varProxy.vt = VT_BSTR;
varProxy.bstrVal = SysAllocString(L"proxy_server:80");
varUrl.vt = VT_BSTR;
varUrl.bstrVal = SysAllocString(L"*.microsoft.com");
hr = pIWinHttpRequest->SetProxy(HTTPREQUEST_PROXYSETTING_PROXY,
varProxy, varUrl);
}
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))
{ // Send Request.
hr = pIWinHttpRequest->Send(varEmpty);
}
if (SUCCEEDED(hr))
{ // Get Response text.
hr = pIWinHttpRequest->get_ResponseText(&bstrResponse);
}
if (SUCCEEDED(hr))
{ // Print the response to a console.
wprintf(L"%.256s",bstrResponse);
}
// Release memory.
if (pIWinHttpRequest)
pIWinHttpRequest->Release();
if (varProxy.bstrVal)
SysFreeString(varProxy.bstrVal);
if (varUrl.bstrVal)
SysFreeString(varUrl.bstrVal);
if (bstrResponse)
SysFreeString(bstrResponse);
CoUninitialize();
return 0;
}
L’exemple de script suivant montre comment définir les paramètres de proxy pour un serveur proxy particulier, ouvrir une connexion HTTP, envoyer une requête HTTP et lire le texte de réponse. Ces paramètres de proxy fonctionnent uniquement si vous disposez d’un serveur proxy nommé « proxy_server » qui utilise le port 80 et que votre ordinateur peut contourner le serveur proxy lorsque le nom d’hôte se termine par « .microsoft.com ».
// HttpRequest SetCredentials flags.
HTTPREQUEST_PROXYSETTING_DEFAULT = 0;
HTTPREQUEST_PROXYSETTING_PRECONFIG = 0;
HTTPREQUEST_PROXYSETTING_DIRECT = 1;
HTTPREQUEST_PROXYSETTING_PROXY = 2;
// Instantiate a WinHttpRequest object.
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
// Use proxy_server for all requests outside of
// the microsoft.com domain.
WinHttpReq.SetProxy( HTTPREQUEST_PROXYSETTING_PROXY,
"proxy_server:80",
"*.microsoft.com");
// Initialize an HTTP request.
WinHttpReq.Open("GET", "https://www.microsoft.com", false);
// Send the HTTP request.
WinHttpReq.Send();
// Display the response text.
WScript.Echo( WinHttpReq.ResponseText);
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows XP, Windows 2000 Professionnel avec SP3 [applications de bureau uniquement] |
Serveur minimal pris en charge |
Windows Server 2003, Windows 2000 Server avec SP3 [applications de bureau uniquement] |
Composant redistribuable |
WinHTTP 5.0 et Internet Explorer 5.01 ou version ultérieure sur Windows XP et Windows 2000. |
IDL |
|
Bibliothèque |
|
DLL |
|