3747{
3748 static const WCHAR data_start[] = {
'<',
'!',
'D',
'O',
'C',
'T',
'Y',
'P',
'E',
' ',
'h',
't',
'm',
'l',
' ',
'P',
'U',
'B',
'L',
'I',
'C'};
3749 static const WCHAR usernameW[] = {
'u',
's',
'e',
'r',
'n',
'a',
'm',
'e',0};
3750 static const WCHAR passwordW[] = {
'p',
'a',
's',
's',
'w',
'o',
'r',
'd',0};
3751 static const WCHAR url1W[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
't',
'e',
's',
't',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',0};
3752 static const WCHAR url2W[] = {
't',
'e',
's',
't',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
'o',
'r',
'g',0};
3753 static const WCHAR url3W[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
't',
'e',
's',
't',
'.',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
3754 'o','r','g','/','t','e','s','t','s','/','p','o','s','t','.','p','h','p',0};
3755 static const WCHAR method1W[] = {
'G',
'E',
'T',0};
3756 static const WCHAR method2W[] = {
'I',
'N',
'V',
'A',
'L',
'I',
'D',0};
3757 static const WCHAR method3W[] = {
'P',
'O',
'S',
'T',0};
3758 static const WCHAR proxy_serverW[] = {
'p',
'r',
'o',
'x',
'y',
's',
'e',
'r',
'v',
'e',
'r',0};
3759 static const WCHAR bypas_listW[] = {
'b',
'y',
'p',
'a',
's',
's',
'l',
'i',
's',
't',0};
3760 static const WCHAR connectionW[] = {
'C',
'o',
'n',
'n',
'e',
'c',
't',
'i',
'o',
'n',0};
3761 static const WCHAR dateW[] = {
'D',
'a',
't',
'e',0};
3762 static const WCHAR test_dataW[] = {
't',
'e',
's',
't',
'd',
'a',
't',
'a',128,0};
3763 static const WCHAR utf8W[] = {
'u',
't',
'f',
'-',
'8',0};
3764 static const WCHAR unauthW[] = {
'U',
'n',
'a',
'u',
't',
'h',
'o',
'r',
'i',
'z',
'e',
'd',0};
3766 IWinHttpRequest *req;
3779
3782
3784 hr =
CoCreateInstance( &CLSID_WinHttpRequest,
NULL, CLSCTX_INPROC_SERVER, &IID_IWinHttpRequest, (
void **)&req );
3786
3789
3791 V_BOOL( &async ) = VARIANT_FALSE;
3792
3795 hr = IWinHttpRequest_Open( req,
method,
url, async );
3799
3802 hr = IWinHttpRequest_Send( req,
data );
3805 if (
hr !=
S_OK)
goto done;
3806
3809
3813
3816
3820
3821 hr = IWinHttpRequest_Abort( req );
3823
3826
3827 hr = IWinHttpRequest_Abort( req );
3829
3830 IWinHttpRequest_Release( req );
3831
3832 hr =
CoCreateInstance( &CLSID_WinHttpRequest,
NULL, CLSCTX_INPROC_SERVER, &IID_IWinHttpRequest, (
void **)&req );
3834
3837 hr = IWinHttpRequest_Open( req,
method,
url, async );
3839
3842 hr = IWinHttpRequest_Open( req,
method,
url, async );
3844
3851 hr = IWinHttpRequest_Open( req,
method,
url, async );
3853
3856 hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_URLCodePage, &
cp );
3860
3863 hr = IWinHttpRequest_put_Option( req, WinHttpRequestOption_URLCodePage,
cp );
3865
3868 hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_URLCodePage, &
cp );
3872
3876 hr = IWinHttpRequest_put_Option( req, WinHttpRequestOption_URLCodePage,
cp );
3879
3882 hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_URLCodePage, &
cp );
3886
3887 hr = IWinHttpRequest_Abort( req );
3889
3890 hr = IWinHttpRequest_Send( req,
empty );
3892
3893 hr = IWinHttpRequest_Abort( req );
3895
3896 IWinHttpRequest_Release( req );
3897
3898 hr =
CoCreateInstance( &CLSID_WinHttpRequest,
NULL, CLSCTX_INPROC_SERVER, &IID_IWinHttpRequest, (
void **)&req );
3900
3901 hr = IWinHttpRequest_get_ResponseText( req,
NULL );
3903
3904 hr = IWinHttpRequest_get_ResponseText( req, &response );
3906
3907 hr = IWinHttpRequest_get_Status( req,
NULL );
3909
3910 hr = IWinHttpRequest_get_Status( req, &
status );
3912
3913 hr = IWinHttpRequest_get_StatusText( req,
NULL );
3915
3916 hr = IWinHttpRequest_get_StatusText( req, &status_text );
3918
3919 hr = IWinHttpRequest_get_ResponseBody( req,
NULL );
3921
3922 hr = IWinHttpRequest_SetTimeouts( req, 10000, 10000, 10000, 10000 );
3924
3925 hr = IWinHttpRequest_SetCredentials( req,
NULL,
NULL, 0xdeadbeef );
3927
3932 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_DIRECT,
proxy_server, bypass_list );
3934
3935 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_PROXY,
proxy_server, bypass_list );
3937
3938 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_DIRECT,
proxy_server, bypass_list );
3940
3941 hr = IWinHttpRequest_GetAllResponseHeaders( req,
NULL );
3943
3944 hr = IWinHttpRequest_GetAllResponseHeaders( req, &
headers );
3946
3947 hr = IWinHttpRequest_GetResponseHeader( req,
NULL,
NULL );
3949
3951 hr = IWinHttpRequest_GetResponseHeader( req, connection,
NULL );
3953
3954 hr = IWinHttpRequest_GetResponseHeader( req, connection, &
value );
3956
3957 hr = IWinHttpRequest_SetRequestHeader( req,
NULL,
NULL );
3959
3961 hr = IWinHttpRequest_SetRequestHeader( req,
date,
NULL );
3963
3965 hr = IWinHttpRequest_SetRequestHeader( req,
date, today );
3967
3968 hr = IWinHttpRequest_SetAutoLogonPolicy( req, 0xdeadbeef );
3970
3971 hr = IWinHttpRequest_SetAutoLogonPolicy( req, AutoLogonPolicy_OnlyIfBypassProxy );
3973
3978 hr = IWinHttpRequest_Open( req,
method,
url, async );
3980
3981 hr = IWinHttpRequest_get_ResponseText( req,
NULL );
3983
3984 hr = IWinHttpRequest_get_ResponseText( req, &response );
3986
3987 hr = IWinHttpRequest_get_Status( req, &
status );
3989
3990 hr = IWinHttpRequest_get_StatusText( req, &status_text );
3992
3993 hr = IWinHttpRequest_get_ResponseBody( req,
NULL );
3995
3996 hr = IWinHttpRequest_SetTimeouts( req, 10000, 10000, 10000, 10000 );
3998
3999 hr = IWinHttpRequest_SetCredentials( req,
NULL,
NULL, 0xdeadbeef );
4001
4003 hr = IWinHttpRequest_SetCredentials( req,
username,
NULL, 0xdeadbeef );
4005
4007 hr = IWinHttpRequest_SetCredentials( req,
NULL,
password, 0xdeadbeef );
4009
4012
4013 hr = IWinHttpRequest_SetCredentials( req,
NULL,
password, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER );
4015
4016 hr = IWinHttpRequest_SetCredentials( req,
username,
password, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER );
4018
4023 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_PROXY,
proxy_server, bypass_list );
4025
4026 hr = IWinHttpRequest_SetProxy( req, 0xdeadbeef,
proxy_server, bypass_list );
4028
4029 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_DIRECT,
proxy_server, bypass_list );
4031
4032 hr = IWinHttpRequest_GetAllResponseHeaders( req, &
headers );
4034
4035 hr = IWinHttpRequest_GetResponseHeader( req, connection, &
value );
4037
4038 hr = IWinHttpRequest_SetRequestHeader( req,
date, today );
4040
4041 hr = IWinHttpRequest_SetRequestHeader( req,
date,
NULL );
4043
4044 hr = IWinHttpRequest_SetAutoLogonPolicy( req, AutoLogonPolicy_OnlyIfBypassProxy );
4046
4047 hr = IWinHttpRequest_Send( req,
empty );
4049
4050 hr = IWinHttpRequest_Send( req,
empty );
4052
4053 hr = IWinHttpRequest_get_ResponseText( req,
NULL );
4055
4056 hr = IWinHttpRequest_get_ResponseText( req, &response );
4060
4061 hr = IWinHttpRequest_get_Status( req,
NULL );
4063
4065 hr = IWinHttpRequest_get_Status( req, &
status );
4068
4069 hr = IWinHttpRequest_get_StatusText( req,
NULL );
4071
4072 hr = IWinHttpRequest_get_StatusText( req, &status_text );
4076
4077 hr = IWinHttpRequest_get_ResponseBody( req,
NULL );
4079
4080 hr = IWinHttpRequest_SetCredentials( req,
username,
password, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER );
4082
4083 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_PROXY,
proxy_server, bypass_list );
4085
4086 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_DIRECT,
proxy_server, bypass_list );
4088
4089 hr = IWinHttpRequest_GetAllResponseHeaders( req,
NULL );
4091
4092 hr = IWinHttpRequest_GetAllResponseHeaders( req, &
headers );
4095
4096 hr = IWinHttpRequest_GetResponseHeader( req,
NULL,
NULL );
4098
4099 hr = IWinHttpRequest_GetResponseHeader( req, connection,
NULL );
4101
4102 hr = IWinHttpRequest_GetResponseHeader( req, connection, &
value );
4105
4106 hr = IWinHttpRequest_SetRequestHeader( req,
date, today );
4108
4109 hr = IWinHttpRequest_SetAutoLogonPolicy( req, AutoLogonPolicy_OnlyIfBypassProxy );
4111
4115 hr = IWinHttpRequest_WaitForResponse( req,
timeout, &succeeded );
4117
4118 hr = IWinHttpRequest_get_Status( req, &
status );
4120
4121 hr = IWinHttpRequest_get_StatusText( req, &status_text );
4124
4125 hr = IWinHttpRequest_SetCredentials( req,
username,
password, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER );
4127
4128 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_PROXY,
proxy_server, bypass_list );
4130
4131 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_DIRECT,
proxy_server, bypass_list );
4133
4134 hr = IWinHttpRequest_Send( req,
empty );
4136
4137 hr = IWinHttpRequest_get_ResponseText( req,
NULL );
4139
4140 hr = IWinHttpRequest_get_ResponseText( req, &response );
4143
4144 hr = IWinHttpRequest_get_ResponseBody( req,
NULL );
4146
4149 hr = IWinHttpRequest_get_ResponseBody( req, &
body );
4152
4155
4158 hr = IWinHttpRequest_get_ResponseStream( req, &
body );
4161
4165
4170 ok(
count != 0xdeadbeef,
"count not set\n" );
4171 ok(
buf[0],
"no data\n" );
4172
4175 hr = IWinHttpRequest_get_ResponseStream( req, &body2 );
4179
4180 hr = IUnknown_QueryInterface(
V_UNKNOWN( &body2 ), &IID_IStream, (
void **)&stream2 );
4183 IStream_Release( stream2 );
4184
4187
4190
4191 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_PROXY,
proxy_server, bypass_list );
4193
4194 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_DIRECT,
proxy_server, bypass_list );
4196
4197 hr = IWinHttpRequest_GetAllResponseHeaders( req, &
headers );
4200
4201 hr = IWinHttpRequest_GetResponseHeader( req, connection, &
value );
4204
4205 hr = IWinHttpRequest_SetRequestHeader( req,
date, today );
4207
4208 hr = IWinHttpRequest_SetAutoLogonPolicy( req, AutoLogonPolicy_OnlyIfBypassProxy );
4210
4211 hr = IWinHttpRequest_Send( req,
empty );
4213
4214 hr = IWinHttpRequest_Abort( req );
4216
4217 hr = IWinHttpRequest_Abort( req );
4219
4220 IWinHttpRequest_Release( req );
4221
4225
4230 ok(
count != 0xdeadbeef,
"count not set\n" );
4231 ok(
buf[0],
"no data\n" );
4232 IStream_Release(
stream );
4233
4234 hr =
CoCreateInstance( &CLSID_WinHttpRequest,
NULL, CLSCTX_INPROC_SERVER, &IID_IWinHttpRequest, (
void **)&req );
4236
4239 hr = IWinHttpRequest_Open( req,
method,
url, async );
4241
4242 hr = IWinHttpRequest_Send( req,
empty );
4244
4245 hr = IWinHttpRequest_WaitForResponse( req,
timeout, &succeeded );
4247
4248 IWinHttpRequest_Release( req );
4249
4259
4260 hr =
CoCreateInstance( &CLSID_WinHttpRequest,
NULL, CLSCTX_INPROC_SERVER, &IID_IWinHttpRequest, (
void **)&req );
4262
4266 V_BOOL( &async ) = VARIANT_FALSE;
4267 hr = IWinHttpRequest_Open( req,
method,
url, async );
4271
4272 hr = IWinHttpRequest_Send( req,
empty );
4275 if (
hr !=
S_OK)
goto done;
4276
4277 hr = IWinHttpRequest_get_ResponseText( req, &response );
4279#ifdef __REACTOS__
4280 ok( !
memcmp(response, data_start,
sizeof(data_start)),
"got %s\n",
4282#else
4284#endif
4286
4287 IWinHttpRequest_Release( req );
4288
4289 hr =
CoCreateInstance( &CLSID_WinHttpRequest,
NULL, CLSCTX_INPROC_SERVER, &IID_IWinHttpRequest, (
void **)&req );
4291
4297 V_BOOL( &async ) = VARIANT_FALSE;
4298 hr = IWinHttpRequest_Open( req,
method,
url, async );
4302
4303 hr = IWinHttpRequest_get_Status( req, &
status );
4305
4308 hr = IWinHttpRequest_Send( req,
data );
4311
4312 hr = IWinHttpRequest_get_ResponseText( req, &response );
4316
4318 hr = IWinHttpRequest_get_Status( req, &
status );
4321
4322done:
4323 IWinHttpRequest_Release( req );
4325}
static const WCHAR proxy_server[]
const char * wine_dbgstr_wn(const WCHAR *str, int n)
VOID WINAPI GetSystemTime(OUT LPSYSTEMTIME lpSystemTime)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
BOOL WINAPI WinHttpTimeFromSystemTime(const SYSTEMTIME *time, LPWSTR string)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
#define sprintf(buf, format,...)
static const WCHAR url1W[]
static const WCHAR utf8W[]
BSTR WINAPI SysAllocString(LPCOLESTR str)
UINT WINAPI SysStringLen(BSTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
static const void * body(MD5_CTX *ctx, const void *data, unsigned long size)
vector< Header * > headers
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
#define DISP_E_PARAMNOTFOUND
#define SEC_E_ILLEGAL_MESSAGE
#define HRESULT_FROM_WIN32(x)
static const WCHAR test_winehq_https[]
#define ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN
#define ERROR_WINHTTP_INVALID_SERVER_RESPONSE
#define ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND
#define ERROR_WINHTTP_UNRECOGNIZED_SCHEME
#define ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND
#define WINHTTP_TIME_FORMAT_BUFSIZE