Microsoft KB Archive/289871

= How To Use MKCOL in WebDAV to Create a New Folder =

Article ID: 289871

Article Last Modified on 2/22/2007

-

APPLIES TO


 * Microsoft Exchange 2000 Server Standard Edition
 * Microsoft XML Parser 2.0
 * Microsoft XML Parser 2.5
 * Microsoft XML Parser 2.6
 * Microsoft XML Core Services 4.0
 * Microsoft XML Core Services 4.0
 * Microsoft Visual C++ 6.0 Enterprise Edition
 * Microsoft Visual C++ 6.0 Professional Edition
 * Microsoft Visual C++ 6.0 Standard Edition

-



This article was previously published under Q289871



SUMMARY
This article demonstrates the use of the Web Distributed Authoring and Versioning (WebDAV) MKCOL command to create a new folder.



MORE INFORMATION
The following Visual C++ code sample uses the HTTPRequest object to send a MKCOL request to the Exchange server to create a new folder named &quot;Testfolder&quot; of type IPF.Appointment under Public Folders.

This sample requires Msxml.dll version 2.0 or later. To run this sample, follow these steps:  In Visual C++, create a new Win32 console application and name it &quot;Mysample&quot;.  Replace the code in the Mysample.cpp file with the following code: include

//TODO: Change the path here if your Msxml.dll file is in a different location.


 * 1) import &quot;c:\winnt\system32\msxml.dll&quot;

//To use MSXML 4.0 import the dll msxml4.dll instead of msxml.dll as follows // #import &quot;c:\winnt\system32\msxml4.dll&quot; // 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 = &quot;myserver1&quot;;

bstr_t sUrl = &quot;http://&quot; + yourServerName + &quot;/public/Testfolder&quot;; bstr_t sMethod = &quot;MKCOL&quot;; //TODO: Change the 2 lines below to reflect your user name and password. _variant_t vUser = L&quot;myserver1\\User1&quot;; _variant_t vPassword = L&quot;password&quot;; MSXML::IXMLHttpRequest* pXMLHttpReq=NULL; HRESULT hr = ::CoCreateInstance(__uuidof(XMLHTTPRequest),               NULL,                CLSCTX_INPROC_SERVER,                __uuidof(IXMLHttpRequest),                (LPVOID*)&pXMLHttpReq);

// To use MSXML 4.0 use the following Declerationand creation of  pXMLHttpReq // IXMLHTTPRequestPtr pXMLHttpReq= NULL; // HRESULT hr=pXMLHttpReq.CreateInstance(&quot;Msxml2.XMLHTTP.4.0&quot;);

if (S_OK != hr) {      printf(&quot;XML Http Request pointer creation failed\n&quot;); return 0; }

// Call open function. _variant_t vAsync = (bool)FALSE; pXMLHttpReq->open(sMethod,         sUrl,          vAsync,          vUser,          vPassword);

pXMLHttpReq->setRequestHeader((bstr_t)&quot;Content-Type&quot;,     (bstr_t)&quot;text/xml&quot;);

bstr_t sReq; sReq = &quot;&quot;; sReq = sReq + &quot;&quot;; sReq = sReq + &quot;&quot;; sReq = sReq + &quot;&quot; + &quot;IPF.Appointment&quot; + //TODO: Change to the desired folder class &quot;&quot;; sReq = sReq + &quot;</a:propertyupdate>&quot;;

// Send the request to set the search criteria. pXMLHttpReq->send(sReq);

// OK, get response. long lStatus; pXMLHttpReq->get_status(&lStatus);

printf(&quot;\n\n%d\n&quot;, lStatus); BSTR bstrResp; pXMLHttpReq->get_statusText(&bstrResp); printf(&quot;\n\n%s\n&quot;, (char*)(bstr_t)bstrResp);

_bstr_t bstrAllHeaders; bstrAllHeaders = pXMLHttpReq->getAllResponseHeaders; printf(&quot;\n\n%s\n&quot;, (char*)bstrAllHeaders);

BSTR bstrResponseText; pXMLHttpReq->get_responseText(&bstrResponseText); printf(&quot;\n\n%s\n&quot;, (char*)(bstr_t)bstrResponseText); }  catch(_com_error &e) {     printf(&quot;Error\a\a\n\tCode = %08lx\n&quot;         &quot;\tCode meaning = %s\tSource = %s\n\tDescription = %s\n&quot;,      e.Error,       e.ErrorMessage,       (char*)e.Source,       (char*)e.Description ); }

CoUninitialize; return 0; }                    </li> Make the changes marked by &quot;TODO:&quot; in the code.</li> Compile and then run the code.

At the end, you will see the Status as &quot;200 OK&quot;. The StatusText will display the status as &quot;HTTP/1.1 201 Created&quot; if the folder was created. You can then go to the Exchange System Manager and you will see the newly created Testfolder listed and it will be of type IPF.Appointment.</li></ol>

Keywords: kbhowto kbmsg KB289871

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.