msxml3/httpreq: Support HEAD request.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
oldstable
Nikolay Sivov 2017-09-08 17:47:27 +03:00 committed by Alexandre Julliard
parent cbacc556ec
commit 79f11f2282
2 changed files with 24 additions and 0 deletions

View File

@ -880,6 +880,7 @@ static HRESULT verify_uri(httprequest *This, IUri *uri)
static HRESULT httprequest_open(httprequest *This, BSTR method, BSTR url,
VARIANT async, VARIANT user, VARIANT password)
{
static const WCHAR MethodHeadW[] = {'H','E','A','D',0};
static const WCHAR MethodGetW[] = {'G','E','T',0};
static const WCHAR MethodPutW[] = {'P','U','T',0};
static const WCHAR MethodPostW[] = {'P','O','S','T',0};
@ -915,6 +916,7 @@ static HRESULT httprequest_open(httprequest *This, BSTR method, BSTR url,
This->verb = BINDVERB_POST;
}
else if (!strcmpiW(method, MethodDeleteW) ||
!strcmpiW(method, MethodHeadW) ||
!strcmpiW(method, MethodPropFindW))
{
This->verb = BINDVERB_CUSTOM;

View File

@ -1731,6 +1731,28 @@ static void test_XMLHTTP(void)
EXPECT_HR(hr, S_OK);
IObjectWithSite_Release(obj_site);
/* HEAD request */
hr = IXMLHttpRequest_put_onreadystatechange(xhr, NULL);
ok(hr == S_OK, "Failed to reset state change handler, hr %#x.\n", hr);
test_open(xhr, "HEAD", xmltestA, S_OK);
V_VT(&varbody) = VT_EMPTY;
hr = IXMLHttpRequest_send(xhr, varbody);
ok(hr == S_OK, "Failed to send HEAD request, hr %#x.\n", hr);
str = NULL;
hr = IXMLHttpRequest_get_responseText(xhr, &str);
ok(hr == S_OK, "Failed to get response text, hr %#x.\n", hr);
ok(!*str, "Unexpected text %s.\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLHttpRequest_getAllResponseHeaders(xhr, &str);
ok(hr == S_OK, "Failed to get response headers, hr %#x.\n", hr);
ok(str && *str, "Expected response headers.\n");
SysFreeString(str);
IXMLHttpRequest_Release(xhr);
free_bstrs();
}