include<stdio.h>
//TODO: Change the path here if your Msxml.dll file is in a different location.
#import "c:\winnt\system32\msxml.dll"
//To use MSXML 6.0 import the dll msxml4.dll instead of msxml.dll as follows
// #import "c:\winnt\system32\msxml6.dll"
// using namespace MSXML2;
using namespace MSXML;
int main(int argc, char* argv[])
{
CoInitialize(NULL);
try
{
//TODO: Change the line below to reflect your server.
bstr_t yourServerName = "myserver1";
bstr_t sUrl = "http://" + yourServerName + "/public/Testfolder";
bstr_t sMethod = "MKCOL";
//TODO: Change the 2 lines below to reflect your user name and password.
_variant_t vUser = L"myserver1\\User1";
_variant_t vPassword = L"password";
MSXML::IXMLHttpRequest* pXMLHttpReq=NULL;
HRESULT hr = ::CoCreateInstance(__uuidof(XMLHTTPRequest),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IXMLHttpRequest),
(LPVOID*)&pXMLHttpReq);
// To use MSXML 6.0 use the following Decleration and creation of pXMLHttpReq
// IXMLHTTPRequestPtr pXMLHttpReq= NULL;
// HRESULT hr=pXMLHttpReq.CreateInstance("Msxml2.XMLHTTP.6.0");
if (S_OK != hr)
{
printf("XML Http Request pointer creation failed\n");
return 0;
}
// Call open function.
_variant_t vAsync = (bool)FALSE;
pXMLHttpReq->open(sMethod,
sUrl,
vAsync,
vUser,
vPassword);
pXMLHttpReq->setRequestHeader((bstr_t)"Content-Type",
(bstr_t)"text/xml");
bstr_t sReq;
sReq = "<?xml version='1.0'?>";
sReq = sReq +
"<a:propertyupdate xmlns:a=" +
"'DAV:' xmlns:ex='http://schemas.microsoft.com/exchange/'>";
sReq = sReq + "<a:set><a:prop>";
sReq = sReq + "<ex:outlookfolderclass>" +
"IPF.Appointment" + //TODO: Change to the desired folder class
"</ex:outlookfolderclass>";
sReq = sReq + "</a:prop></a:set></a:propertyupdate>";
// Send the request to set the search criteria.
pXMLHttpReq->send(sReq);
// OK, get response.
long lStatus;
pXMLHttpReq->get_status(&lStatus);
printf("\n~~~~~~~~\n%d\n", lStatus);
BSTR bstrResp;
pXMLHttpReq->get_statusText(&bstrResp);
printf("\n~~~~~~~~\n%s\n", (char*)(bstr_t)bstrResp);
_bstr_t bstrAllHeaders;
bstrAllHeaders = pXMLHttpReq->getAllResponseHeaders();
printf("\n~~~~~~~~\n%s\n", (char*)bstrAllHeaders);
BSTR bstrResponseText;
pXMLHttpReq->get_responseText(&bstrResponseText);
printf("\n~~~~~~~~\n%s\n", (char*)(bstr_t)bstrResponseText);
}
catch(_com_error &e)
{
printf("Error\a\a\n\tCode = %08lx\n"
"\tCode meaning = %s\tSource = %s\n\tDescription = %s\n",
e.Error(),
e.ErrorMessage(),
(char*)e.Source(),
(char*)e.Description() );
}
CoUninitialize();
return 0;
}