You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
8.1 KiB
206 lines
8.1 KiB
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows HTTP Services (WinHTTP)
|
|
// Copyright (C) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// File: httprequest.idl
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
|
|
cpp_quote("//+-------------------------------------------------------------------------")
|
|
cpp_quote("//")
|
|
cpp_quote("// Microsoft Windows HTTP Services (WinHTTP) version 5.1")
|
|
cpp_quote("// Copyright (C) Microsoft Corporation. All rights reserved.")
|
|
cpp_quote("//")
|
|
cpp_quote("//--------------------------------------------------------------------------")
|
|
|
|
#include "httprequestid.h"
|
|
|
|
|
|
|
|
|
|
[
|
|
uuid(662901fc-6951-4854-9eb2-d9a2570f2b2e),
|
|
helpstring("Microsoft WinHTTP Services, version 5.1"),
|
|
lcid(0x0000),
|
|
version(5.1)
|
|
|
|
]
|
|
library WinHttp
|
|
{
|
|
importlib ("stdole2.tlb");
|
|
|
|
typedef [public] long HTTPREQUEST_PROXY_SETTING;
|
|
const HTTPREQUEST_PROXY_SETTING HTTPREQUEST_PROXYSETTING_DEFAULT = 0x00000000;
|
|
const HTTPREQUEST_PROXY_SETTING HTTPREQUEST_PROXYSETTING_PRECONFIG = 0x00000000;
|
|
const HTTPREQUEST_PROXY_SETTING HTTPREQUEST_PROXYSETTING_DIRECT = 0x00000001;
|
|
const HTTPREQUEST_PROXY_SETTING HTTPREQUEST_PROXYSETTING_PROXY = 0x00000002;
|
|
|
|
typedef [public] long HTTPREQUEST_SETCREDENTIALS_FLAGS;
|
|
const HTTPREQUEST_SETCREDENTIALS_FLAGS HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0x00000000;
|
|
const HTTPREQUEST_SETCREDENTIALS_FLAGS HTTPREQUEST_SETCREDENTIALS_FOR_PROXY = 0x00000001;
|
|
|
|
typedef
|
|
[uuid(12782009-FE90-4877-9730-E5E183669B19), helpstring("WinHttpRequest Options")]
|
|
enum WinHttpRequestOption
|
|
{
|
|
WinHttpRequestOption_UserAgentString,
|
|
WinHttpRequestOption_URL,
|
|
WinHttpRequestOption_URLCodePage,
|
|
WinHttpRequestOption_EscapePercentInURL,
|
|
WinHttpRequestOption_SslErrorIgnoreFlags,
|
|
WinHttpRequestOption_SelectCertificate,
|
|
WinHttpRequestOption_EnableRedirects,
|
|
WinHttpRequestOption_UrlEscapeDisable,
|
|
WinHttpRequestOption_UrlEscapeDisableQuery,
|
|
WinHttpRequestOption_SecureProtocols,
|
|
WinHttpRequestOption_EnableTracing,
|
|
WinHttpRequestOption_RevertImpersonationOverSsl,
|
|
WinHttpRequestOption_EnableHttpsToHttpRedirects,
|
|
WinHttpRequestOption_EnablePassportAuthentication,
|
|
WinHttpRequestOption_MaxAutomaticRedirects,
|
|
WinHttpRequestOption_MaxResponseHeaderSize,
|
|
WinHttpRequestOption_MaxResponseDrainSize,
|
|
WinHttpRequestOption_EnableHttp1_1,
|
|
WinHttpRequestOption_EnableCertificateRevocationCheck
|
|
} WinHttpRequestOption;
|
|
|
|
typedef
|
|
[uuid(9d8a6df8-13de-4b1f-a330-67c719d62514)]
|
|
enum WinHttpRequestAutoLogonPolicy
|
|
{
|
|
AutoLogonPolicy_Always,
|
|
AutoLogonPolicy_OnlyIfBypassProxy,
|
|
AutoLogonPolicy_Never
|
|
} WinHttpRequestAutoLogonPolicy;
|
|
|
|
typedef
|
|
[uuid(152a1ca2-55a9-43a3-b187-0605bb886349)]
|
|
enum WinHttpRequestSslErrorFlags
|
|
{
|
|
SslErrorFlag_UnknownCA = 0x00000100,
|
|
SslErrorFlag_CertWrongUsage = 0x00000200,
|
|
SslErrorFlag_CertCNInvalid = 0x00001000,
|
|
SslErrorFlag_CertDateInvalid = 0x00002000,
|
|
SslErrorFlag_Ignore_All = 0x00003300
|
|
} WinHttpRequestSslErrorFlags;
|
|
|
|
|
|
typedef
|
|
[uuid(6b2c51c1-a8ea-46bd-b928-c9b76f9f14dd)]
|
|
enum WinHttpRequestSecureProtocols
|
|
{
|
|
SecureProtocol_SSL2 = 0x00000008,
|
|
SecureProtocol_SSL3 = 0x00000020,
|
|
SecureProtocol_TLS1 = 0x00000080,
|
|
SecureProtocol_ALL = 0x000000A8
|
|
} WinHttpRequestSecureProtocols;
|
|
|
|
|
|
[
|
|
object,
|
|
uuid(016fe2ec-b2c8-45f8-b23b-39e53a75396b),
|
|
odl,
|
|
dual,
|
|
oleautomation,
|
|
nonextensible,
|
|
helpstring("IWinHttpRequest Interface"),
|
|
pointer_default(unique)
|
|
]
|
|
interface IWinHttpRequest : IDispatch
|
|
{
|
|
[id(DISPID_HTTPREQUEST_SETPROXY), helpstring("Specify proxy configuration")]
|
|
HRESULT SetProxy([in] HTTPREQUEST_PROXY_SETTING ProxySetting,
|
|
[in, optional] VARIANT ProxyServer,
|
|
[in, optional] VARIANT BypassList);
|
|
|
|
[id(DISPID_HTTPREQUEST_SETCREDENTIALS), helpstring("Specify authentication credentials")]
|
|
HRESULT SetCredentials([in] BSTR UserName,
|
|
[in] BSTR Password,
|
|
[in] HTTPREQUEST_SETCREDENTIALS_FLAGS Flags);
|
|
|
|
[id(DISPID_HTTPREQUEST_OPEN), helpstring("Open HTTP connection")]
|
|
HRESULT Open([in] BSTR Method, [in] BSTR Url, [in, optional] VARIANT Async);
|
|
|
|
[id(DISPID_HTTPREQUEST_SETREQUESTHEADER), helpstring("Add HTTP request header")]
|
|
HRESULT SetRequestHeader([in] BSTR Header, [in] BSTR Value);
|
|
|
|
[id(DISPID_HTTPREQUEST_GETRESPONSEHEADER), helpstring("Get HTTP response header")]
|
|
HRESULT GetResponseHeader([in] BSTR Header, [out, retval] BSTR * Value);
|
|
|
|
[id(DISPID_HTTPREQUEST_GETALLRESPONSEHEADERS), helpstring("Get all HTTP response headers")]
|
|
HRESULT GetAllResponseHeaders([out, retval] BSTR * Headers);
|
|
|
|
[id(DISPID_HTTPREQUEST_SEND), helpstring("Send HTTP request")]
|
|
HRESULT Send([in, optional] VARIANT Body);
|
|
|
|
[propget, id(DISPID_HTTPREQUEST_STATUS), helpstring("Get HTTP status code")]
|
|
HRESULT Status([out, retval] long * Status);
|
|
|
|
[propget, id(DISPID_HTTPREQUEST_STATUSTEXT), helpstring("Get HTTP status text")]
|
|
HRESULT StatusText([out, retval] BSTR * Status);
|
|
|
|
[propget, id(DISPID_HTTPREQUEST_RESPONSETEXT), helpstring("Get response body as a string")]
|
|
HRESULT ResponseText([out, retval] BSTR * Body);
|
|
|
|
[propget, id(DISPID_HTTPREQUEST_RESPONSEBODY), helpstring("Get response body as a safearray of UI1")]
|
|
HRESULT ResponseBody([out, retval] VARIANT * Body);
|
|
|
|
[propget, id(DISPID_HTTPREQUEST_RESPONSESTREAM), helpstring("Get response body as a stream")]
|
|
HRESULT ResponseStream([out, retval] VARIANT * Body);
|
|
|
|
[propget, id(DISPID_HTTPREQUEST_OPTION)]
|
|
HRESULT Option([in] WinHttpRequestOption Option, [out, retval] VARIANT * Value);
|
|
|
|
[propput, id(DISPID_HTTPREQUEST_OPTION)]
|
|
HRESULT Option([in] WinHttpRequestOption Option, [in] VARIANT Value);
|
|
|
|
[id(DISPID_HTTPREQUEST_WAITFORRESPONSE), helpstring("Wait for asynchronous send to complete, with optional timeout (in seconds)")]
|
|
HRESULT WaitForResponse([in, optional] VARIANT Timeout, [out, retval] VARIANT_BOOL * Succeeded);
|
|
|
|
[id(DISPID_HTTPREQUEST_ABORT), helpstring("Abort an asynchronous operation in progress")]
|
|
HRESULT Abort();
|
|
|
|
[id(DISPID_HTTPREQUEST_SETTIMEOUTS), helpstring("Specify timeout settings (in milliseconds)")]
|
|
HRESULT SetTimeouts([in] long ResolveTimeout, [in] long ConnectTimeout, [in] long SendTimeout, [in] long ReceiveTimeout);
|
|
|
|
[id(DISPID_HTTPREQUEST_SETCLIENTCERTIFICATE), helpstring("Specify a client certificate")]
|
|
HRESULT SetClientCertificate([in] BSTR ClientCertificate);
|
|
|
|
[id(DISPID_HTTPREQUEST_SETAUTOLOGONPOLICY), helpstring("Specify if credentials should be sent automatically")]
|
|
HRESULT SetAutoLogonPolicy([in] WinHttpRequestAutoLogonPolicy AutoLogonPolicy);
|
|
};
|
|
|
|
[
|
|
object,
|
|
uuid(f97f4e15-b787-4212-80d1-d380cbbf982e),
|
|
odl,
|
|
oleautomation,
|
|
nonextensible,
|
|
helpstring("IWinHttpRequestEvents Interface"),
|
|
pointer_default(unique)
|
|
]
|
|
interface IWinHttpRequestEvents : IUnknown
|
|
{
|
|
void OnResponseStart([in] long Status, [in] BSTR ContentType);
|
|
|
|
void OnResponseDataAvailable([in] SAFEARRAY(unsigned char) * Data);
|
|
|
|
void OnResponseFinished();
|
|
|
|
void OnError([in] long ErrorNumber, [in] BSTR ErrorDescription);
|
|
};
|
|
|
|
|
|
// WinHttpRequest Class
|
|
[
|
|
uuid(2087c2f4-2cef-4953-a8ab-66779b670495),
|
|
helpstring("WinHttpRequest component")
|
|
]
|
|
coclass WinHttpRequest
|
|
{
|
|
[default] interface IWinHttpRequest;
|
|
[default, source] interface IWinHttpRequestEvents;
|
|
};
|
|
}
|