webdav 搜索查询 exchang
代码
string url = ConfigHelper.GetConfigValue("exchangUrl"); //指定Exchange服务器地址
if (url.Substring(url.Length - 1, 1) != "/")
{
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);
if (url.Substring(url.Length - 1, 1) != "/")
{
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>