webdav 搜索查询 exchang

代码
  string url = ConfigHelper.GetConfigValue("exchangUrl"); //指定Exchange服务器地址 

                
if (url.Substring(url.Length - 11!= "/")
                {
                    url 
= url + "/";
                }
                
string domainName = ConfigHelper.GetConfigValue("domainName");
                
string strRootURI = url + userName + "/"+sysName+"/"//得到要访问邮箱的WebDAV地址
                HttpWebRequest Request;
                WebResponse Response;
                CredentialCache MyCredentialCache;
                
string strQuery = "";
                
byte[] bytes = null;
                System.IO.Stream RequestStream 
= null;
                System.IO.Stream ResponseStream 
= null;
                XmlDocument ResponseXmlDoc 
= null;

                
#region  delte
                
// strQuery = "<?xml version=\"1.0\"?><D:searchrequest xmlns:D = \"DAV:\" >"
                
//+ "<D:sql>SELECT \"urn:schemas:httpmail:importance\",\"urn:schemas:httpmail:from\",\"urn:schemas:httpmail:read\",\"urn:schemas:httpmail:datereceived\",\"urn:schemas:httpmail:subject\",\"urn:schemas:httpmail:hasattachment\","
                
//+ "\"DAV:contentclass\",\"DAV:getcontentlength\",\"DAV:displayname\""
                
//+ "FROM \"" + strRootURI + "\""
                
//+ "WHERE \"DAV:ishidden\" = false AND \"DAV:isfolder\" = false"
                
//+ "</D:sql></D:searchrequest>";

                
//XmlNodeList idNodes = ResponseXmlDoc.GetElementsByTagName("a:displayname");
                
//XmlNodeList SenderNodes = ResponseXmlDoc.GetElementsByTagName("d:from");
                
//XmlNodeList importanceNodes = ResponseXmlDoc.GetElementsByTagName("d:importance");
                
//XmlNodeList contextclassNodes = ResponseXmlDoc.GetElementsByTagName("a:contentclass");
                
//XmlNodeList readNodes = ResponseXmlDoc.GetElementsByTagName("d:read");
                
//XmlNodeList getcontentlengthNodes = ResponseXmlDoc.GetElementsByTagName("a:getcontentlength");
                
//XmlNodeList hasattachmentNodes = ResponseXmlDoc.GetElementsByTagName("d:hasattachment");
                
//XmlNodeList hrefNodes = ResponseXmlDoc.GetElementsByTagName("a:href");
                
//XmlNodeList subjectNodes = ResponseXmlDoc.GetElementsByTagName("d:subject");
                
//XmlNodeList datareceiveNodes = ResponseXmlDoc.GetElementsByTagName("d:datereceived");

                
#endregion

   
                strQuery 
= "<?xml version=\"1.0\"?><D:searchrequest xmlns:D = \"DAV:\" >"
               
+ "<D:sql>SELECT \"urn:schemas:httpmail:read\",\"urn:schemas:contacts:telephoneNumber\", \"urn:schemas:contacts:sn\",\"urn:schemas:contacts:givenName\", \"urn:schemas:contacts:homePhone\",\"urn:schemas:contacts:mobile\",\"urn:schemas:httpmail:from\",\"urn:schemas:httpmail:datereceived\",\"urn:schemas:httpmail:subject\" ,\"DAV:getcontentlength\" "
               
+ "FROM \"" + strRootURI + "\""
               
+ "WHERE \"DAV:ishidden\" = false AND \"DAV:isfolder\" = false "
               
+ "</D:sql></D:searchrequest>";

                MyCredentialCache 
= new CredentialCache();
                Request 
= (System.Net.HttpWebRequest)HttpWebRequest.Create(strRootURI);


                MyCredentialCache.Add(
new Uri(strRootURI), "Basic"new NetworkCredential(userName, passWord));
                Request.Credentials 
= MyCredentialCache;

                Request.Method 
= "SEARCH";
                bytes 
= Encoding.UTF8.GetBytes((string)strQuery);
                Request.ContentLength 
= bytes.Length;
                RequestStream 
= Request.GetRequestStream();
                RequestStream.Write(bytes, 
0, bytes.Length);
                Request.ContentType 
= "text/xml;charset=\"utf-8\"";
                RequestStream.Close();
                Response 
= (HttpWebResponse)Request.GetResponse();
                ResponseStream 
= Response.GetResponseStream();
                ResponseXmlDoc 
= new XmlDocument();
                ResponseXmlDoc.Load(ResponseStream);

 

  

 

 

 

 

 example shows aSEARCH Methodrequest:

SEARCH /public/folder1/ HTTP/1.1
Content-Type: text/xml
Content-Length: XXX
...

<?xml version="1.0"?>
<D:searchrequest xmlns:D = "DAV:" >
   <D:sql>
SELECT "DAV:displayname"  FROM "http://myserver/vroot/folder1/"
WHERE "DAV:ishidden" = false AND "DAV:isfolder" = false
   </D:sql>
</D:searchrequest>
posted @ 2009-12-09 16:38  time is money  阅读(338)  评论(0编辑  收藏  举报