Microsoft KB Archive/313129

= How to use the HttpWebRequest class and the HttpWebResponse class to search for items on a computer that is running Exchange 2000 Server in Visual C# =

Article ID: 313129

Article Last Modified on 12/11/2006

-

APPLIES TO


 * Microsoft Visual C# 2005 Express Edition
 * Microsoft Visual C# .NET 2003 Standard Edition
 * Microsoft Visual C# .NET 2002 Standard Edition
 * Microsoft Exchange 2000 Server Standard Edition

-



This article was previously published under Q313129



SUMMARY
This article describes how to use the HttpWebRequestclass and the HttpWebResponse class in the &quot;System.Net&quot; namespace to search for items on a computer that is running Microsoft Exchange 2000 Server by using Microsoft Visual C#.



MORE INFORMATION
To search for an item on a computer that is running Exchange 2000 by using Visual C#, follow these steps:  Start Microsoft Visual Studio .NET or Microsoft Visual Studio 2005. On the File menu, point to New, and then click Project. In the Visual C# Projects types list, click Console Application.

Note In Visual Studio 2005, click Console Application in the Visual C# list.

In Visual Studio .NET, Class1.cs is created by default. In Visual Studio 2005, Program.cs is created by default.  In the code window, replace the code with the following: using System; using System.Net; using System.IO;

namespace WebDavNET { ///   /// Summary description for Class1. ///  class Class1 {   static void Main(string[] args) {     try {       // TODO: Replace with the URL of an object on the computer that is running Exchange 2000. string sUri = &quot;http://ExchServer/Exchange/UserAlias/Inbox/&quot;;

System.Uri myUri = new System.Uri(sUri); HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(myUri);

string sQuery; sQuery = &quot;&quot; + &quot;&quot; + &quot;SELECT \&quot;DAV:displayname\&quot; &quot; + &quot;FROM SCOPE('SHALLOW TRAVERSAL OF \&quot;&quot; + sUri + &quot;\&quot;') &quot; + &quot;WHERE \&quot;DAV:isfolder\&quot; = false&quot; + &quot;&quot; + &quot;&quot;;

// Set the credentials. // TODO: Replace with the appropriate user credentials. NetworkCredential myCred = new NetworkCredential(@&quot;DomainName\UserName&quot;, &quot;UserPassword&quot;); CredentialCache myCredentialCache = new CredentialCache; myCredentialCache.Add(myUri, &quot;Basic&quot;, myCred); HttpWRequest.Credentials = myCredentialCache;

// Set the headers. HttpWRequest.KeepAlive = false; HttpWRequest.Headers.Set(&quot;Pragma&quot;, &quot;no-cache&quot;);

HttpWRequest.Headers.Set(&quot;Translate&quot;, &quot;f&quot;); HttpWRequest.Headers.Set(&quot;Depth&quot;, &quot;0&quot;); HttpWRequest.ContentType = &quot;text/xml&quot;; HttpWRequest.ContentLength = sQuery.Length;

//Set the request timeout to 5 minutes. HttpWRequest.Timeout = 300000; // Set the request method. HttpWRequest.Method = &quot;SEARCH&quot;;

//Store the data in a byte array. byte[] ByteQuery = System.Text.Encoding.ASCII.GetBytes(sQuery); HttpWRequest.ContentLength = ByteQuery.Length; Stream QueryStream = HttpWRequest.GetRequestStream; // Write the data to be posted to the Request Stream. QueryStream.Write(ByteQuery,0,ByteQuery.Length); QueryStream.Close;

// Send the request and get the response. HttpWebResponse HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse;

// Get the Status code. int iStatCode = (int)HttpWResponse.StatusCode; string sStatus = iStatCode.ToString; Console.WriteLine(&quot;Status Code: {0}&quot;, sStatus); // Get the request headers string sReqHeaders = HttpWRequest.Headers.ToString; Console.WriteLine(sReqHeaders);

// Read the Response Stream. Stream strm = HttpWResponse.GetResponseStream; StreamReader sr = new StreamReader(strm); string sText = sr.ReadToEnd; Console.WriteLine(&quot;Response: {0}&quot;, sText);

// Close the stream. strm.Close;

// Clean up       myCred = null; myCredentialCache = null; HttpWRequest = null; HttpWResponse = null; QueryStream = null; strm = null; sr = null; }     catch (Exception e)      { Console.WriteLine(&quot;{0} Exception caught.&quot;, e); }   }  } } </li> Search for TODO in the code, and then modify the code for your environment.</li> Press F5 to build and to run the program.</li> Make sure that the correct items are received from the response.</li></ol>

Additional query words: search, item, exchange

Keywords: kbcode kbmsg kbhowto KB313129

-

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

© Microsoft Corporation. All rights reserved.